list of generic structs
This commit is contained in:
parent
46e5e77cc8
commit
18b03eae8a
2 changed files with 23 additions and 4 deletions
|
@ -758,9 +758,26 @@ private:
|
||||||
auto elementType = type.asList().getElementType();
|
auto elementType = type.asList().getElementType();
|
||||||
switch (elementType.which()) {
|
switch (elementType.which()) {
|
||||||
case schema::Type::STRUCT: {
|
case schema::Type::STRUCT: {
|
||||||
// XXX
|
auto elementStructSchema = elementType.asStruct();
|
||||||
|
auto elementNode = elementStructSchema.getProto();
|
||||||
|
if (elementNode.getIsGeneric()) {
|
||||||
|
auto factoryArgs = getFactoryArguments(elementStructSchema, elementStructSchema);
|
||||||
|
return kj::strTree(
|
||||||
|
"new org.capnproto.StructList.Factory<",
|
||||||
|
typeName(elementType, kj::str("Builder")), ", ",
|
||||||
|
typeName(elementType, kj::str("Reader")),
|
||||||
|
">(",
|
||||||
|
javaFullName(elementStructSchema), ".newFactory(",
|
||||||
|
kj::StringTree(
|
||||||
|
KJ_MAP(arg, factoryArgs) {
|
||||||
|
return kj::strTree(arg);
|
||||||
|
}, ","),
|
||||||
|
"))"
|
||||||
|
).flatten();
|
||||||
|
} else {
|
||||||
return kj::str(typeName(elementType, kj::str("listFactory")));
|
return kj::str(typeName(elementType, kj::str("listFactory")));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case schema::Type::LIST:
|
case schema::Type::LIST:
|
||||||
return kj::str("new org.capnproto.ListList.Factory<",
|
return kj::str("new org.capnproto.ListList.Factory<",
|
||||||
typeName(elementType, kj::str("Builder")),", ",
|
typeName(elementType, kj::str("Builder")),", ",
|
||||||
|
|
|
@ -373,6 +373,8 @@ struct TestUseGenerics {
|
||||||
(value = (foo = "text", rev = (foo = (int16Field = 321))));
|
(value = (foo = "text", rev = (foo = (int16Field = 321))));
|
||||||
defaultWrapper2 @10 :TestGenericsWrapper2 =
|
defaultWrapper2 @10 :TestGenericsWrapper2 =
|
||||||
(value = (value = (foo = "text", rev = (foo = (int16Field = 321)))));
|
(value = (value = (foo = "text", rev = (foo = (int16Field = 321)))));
|
||||||
|
|
||||||
|
listOfGenerics @11 :List(TestGenerics(TestAllTypes, Text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue