diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index 14d3acd81..21443a43f 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -3131,7 +3131,7 @@ Offset FieldDef::Serialize(FlatBufferBuilder *builder, } bool FieldDef::Deserialize(Parser &parser, const reflection::Field *field) { - name = parser.UnqualifiedName(field->name()->str()); + name = field->name()->str(); defined_namespace = parser.current_namespace_; if (!value.type.Deserialize(parser, field->type())) return false; @@ -3158,6 +3158,12 @@ bool FieldDef::Deserialize(Parser &parser, const reflection::Field *field) { value.type.element != BASE_TYPE_UCHAR) return false; } + if (auto nested = attributes.Lookup("nested_flatbuffer")) { + auto nested_qualified_name = + parser.current_namespace_->GetFullyQualifiedName(nested->constant); + nested_flatbuffer = parser.LookupStruct(nested_qualified_name); + if (!nested_flatbuffer) return false; + } DeserializeDoc(doc_comment, field->documentation()); return true; } diff --git a/tests/monsterdata_test.golden b/tests/monsterdata_test.golden index ab401544f..4bead9744 100644 --- a/tests/monsterdata_test.golden +++ b/tests/monsterdata_test.golden @@ -56,6 +56,9 @@ name: "Wilma" } ], + testnestedflatbuffer: { + name: "NestedMonster" + }, testbool: true, testhashs32_fnv1: -579221183, testhashu32_fnv1: 3715746113,