drat, this doesn't quite work

This commit is contained in:
David Renshaw 2014-10-28 18:23:51 -04:00
parent 3d8537521c
commit a578dd1332
3 changed files with 25 additions and 6 deletions

View file

@ -370,9 +370,16 @@ private:
}
KJ_UNREACHABLE;
}
case schema::Type::ANY_POINTER:
// Not used.
return kj::strTree();
case schema::Type::ANY_POINTER: {
KJ_IF_MAYBE(brandParam, type.getBrandParameter()) {
return
kj::strTree(schemaLoader.get(brandParam->scopeId).getProto().getParameters()[brandParam->index].getName(),
"_", kj::hex(brandParam->scopeId), "_", suffix);
} else {
return kj::strTree("org.capnproto.AnyPointer.", suffix);
}
}
}
KJ_UNREACHABLE;
}
@ -721,6 +728,16 @@ private:
case schema::Type::DATA : {
return kj::str("org.capnproto.Data.factory");
}
case schema::Type::ANY_POINTER : {
KJ_IF_MAYBE(brandParam, type.getBrandParameter()) {
return
kj::str(schemaLoader.get(brandParam->scopeId).getProto().getParameters()[brandParam->index].getName(),
"_", kj::hex(brandParam->scopeId), "_Factory");
} else {
return kj::str("org.capnproto.AnyPointer.factory");
}
}
case schema::Type::STRUCT : {
auto structSchema = type.asStruct();
auto node = structSchema.getProto();
@ -1530,14 +1547,14 @@ private:
kj::Vector<NodeText> nestedTexts(proto.getNestedNodes().size());
for (auto nested: proto.getNestedNodes()) {
nestedTexts.add(makeNodeText(
subScope, nested.getName(), schemaLoader.get(nested.getId()), indent + 1));
subScope, nested.getName(), schemaLoader.getUnbound(nested.getId()), indent + 1));
};
if (proto.isStruct()) {
for (auto field: proto.getStruct().getFields()) {
if (field.isGroup()) {
nestedTexts.add(makeNodeText(subScope, toTitleCase(field.getName()),
schemaLoader.get(field.getGroup().getTypeId()), indent + 1));
schemaLoader.getUnbound(field.getGroup().getTypeId()), indent + 1));
}
}
} else if (proto.isInterface()) {
@ -1769,7 +1786,7 @@ private:
}
auto nodeTexts = KJ_MAP(nested, node.getNestedNodes()) {
return makeNodeText("", nested.getName(), schemaLoader.get(nested.getId()), 1);
return makeNodeText("", nested.getName(), schemaLoader.getUnbound(nested.getId()), 1);
};
kj::String separator = kj::str("// ", kj::repeat('=', 87), "\n");

View file

@ -325,6 +325,7 @@ struct TestNewVersion {
struct TestGenerics(Foo, Bar) {
foo @0 :Foo;
rev @1 :TestGenerics(Text, List(UInt8));
# dub @2 :TestGenerics(Foo, Bar);
# struct Inner {
# foo @0 :Foo;

View file

@ -35,6 +35,7 @@ public final class AnyPointer {
return result;
}
}
public static final Factory factory = new Factory();
public final static class Reader {
final SegmentReader segment;