diff --git a/src/idl_gen_go.cpp b/src/idl_gen_go.cpp index 6f256bd11..a2e185bfb 100644 --- a/src/idl_gen_go.cpp +++ b/src/idl_gen_go.cpp @@ -332,7 +332,7 @@ static void StructBuilderArgs(const StructDef &struct_def, // don't clash, and to make it obvious these arguments are constructing // a nested struct, prefix the name with the struct name. StructBuilderArgs(*field.value.type.struct_def, - (field.value.type.struct_def->name + "_").c_str(), + (nameprefix + (field.name + "_")).c_str(), code_ptr); } else { std::string &code = *code_ptr; @@ -365,7 +365,7 @@ static void StructBuilderBody(const StructDef &struct_def, code += " builder.Pad(" + NumToString(field.padding) + ")\n"; if (IsStruct(field.value.type)) { StructBuilderBody(*field.value.type.struct_def, - (field.value.type.struct_def->name + "_").c_str(), + (nameprefix + (field.name + "_")).c_str(), code_ptr); } else { code += " builder.Prepend" + GenMethod(field) + "("; diff --git a/src/idl_gen_python.cpp b/src/idl_gen_python.cpp index c03ac937b..96f9c4285 100644 --- a/src/idl_gen_python.cpp +++ b/src/idl_gen_python.cpp @@ -307,9 +307,9 @@ static void StructBuilderArgs(const StructDef &struct_def, if (IsStruct(field.value.type)) { // Generate arguments for a struct inside a struct. To ensure names // don't clash, and to make it obvious these arguments are constructing - // a nested struct, prefix the name with the struct name. + // a nested struct, prefix the name with the field name. StructBuilderArgs(*field.value.type.struct_def, - (field.value.type.struct_def->name + "_").c_str(), + (nameprefix + (field.name + "_")).c_str(), code_ptr); } else { std::string &code = *code_ptr; @@ -341,7 +341,7 @@ static void StructBuilderBody(const StructDef &struct_def, code += " builder.Pad(" + NumToString(field.padding) + ")\n"; if (IsStruct(field.value.type)) { StructBuilderBody(*field.value.type.struct_def, - (field.value.type.struct_def->name + "_").c_str(), + (nameprefix + (field.name + "_")).c_str(), code_ptr); } else { code += " builder.Prepend" + GenMethod(field) + "("; diff --git a/tests/MyGame/Example/Vec3.go b/tests/MyGame/Example/Vec3.go index d2bab2c9b..def0b4d1b 100644 --- a/tests/MyGame/Example/Vec3.go +++ b/tests/MyGame/Example/Vec3.go @@ -27,13 +27,13 @@ func (rcv *Vec3) Test3(obj *Test) *Test { return obj } -func CreateVec3(builder *flatbuffers.Builder, x float32, y float32, z float32, test1 float64, test2 int8, Test_a int16, Test_b int8) flatbuffers.UOffsetT { +func CreateVec3(builder *flatbuffers.Builder, x float32, y float32, z float32, test1 float64, test2 int8, test3_a int16, test3_b int8) flatbuffers.UOffsetT { builder.Prep(16, 32) builder.Pad(2) builder.Prep(2, 4) builder.Pad(1) - builder.PrependInt8(Test_b) - builder.PrependInt16(Test_a) + builder.PrependInt8(test3_b) + builder.PrependInt16(test3_a) builder.Pad(1) builder.PrependInt8(test2) builder.PrependFloat64(test1) diff --git a/tests/MyGame/Example/Vec3.py b/tests/MyGame/Example/Vec3.py index 3010d5bc9..c4ddfe230 100644 --- a/tests/MyGame/Example/Vec3.py +++ b/tests/MyGame/Example/Vec3.py @@ -27,13 +27,13 @@ class Vec3(object): return obj -def CreateVec3(builder, x, y, z, test1, test2, Test_a, Test_b): +def CreateVec3(builder, x, y, z, test1, test2, test3_a, test3_b): builder.Prep(16, 32) builder.Pad(2) builder.Prep(2, 4) builder.Pad(1) - builder.PrependInt8(Test_b) - builder.PrependInt16(Test_a) + builder.PrependInt8(test3_b) + builder.PrependInt16(test3_a) builder.Pad(1) builder.PrependInt8(test2) builder.PrependFloat64(test1) diff --git a/tests/generate_code.sh b/tests/generate_code.sh index 5577d180a..5b768197f 100644 --- a/tests/generate_code.sh +++ b/tests/generate_code.sh @@ -1,2 +1,2 @@ -../flatc -c -j -n -g -b --gen-mutable --no-includes monster_test.fbs monsterdata_test.json +../flatc -c -j -n -g -b -p --gen-mutable --no-includes monster_test.fbs monsterdata_test.json ../flatc -b --schema monster_test.fbs