diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index b27493945..fc3f97b59 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -608,7 +608,7 @@ CheckedError Parser::AddField(StructDef &struct_def, const std::string &name, CheckedError Parser::ParseField(StructDef &struct_def) { std::string name = attribute_; - if (name == struct_def.name) + if (structs_.Lookup(name)) return Error("field name can not be the same as table/struct name"); std::vector dc = doc_comment_; diff --git a/tests/test.cpp b/tests/test.cpp index a8c6faa9e..4b9923904 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -1101,7 +1101,7 @@ void ErrorTest() { TestError("table X { Y:[[int]]; }", "nested vector"); TestError("table X { Y:1; }", "illegal type"); TestError("table X { Y:int; Y:int; }", "field already"); - TestError("table X { X:int; }", "same as table"); + TestError("table Y {} table X { Y:int; }", "same as table"); TestError("struct X { Y:string; }", "only scalar"); TestError("struct X { Y:int (deprecated); }", "deprecate"); TestError("union Z { X } table X { Y:Z; } root_type X; { Y: {}, A:1 }",