Disallowing field name same as table name.

Change-Id: I4b5d822cc4eda975949d1b7cf33674c5bbf9d4b1
Tested: on Linux.
This commit is contained in:
Wouter van Oortmerssen 2017-06-02 15:55:02 -07:00
parent dd05f3249a
commit e9f1f4d9b7
2 changed files with 5 additions and 0 deletions

View File

@ -601,6 +601,10 @@ 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)
return Error("field name can not be the same as table/struct name");
std::vector<std::string> dc = doc_comment_;
EXPECT(kTokenIdentifier);
EXPECT(':');

View File

@ -1038,6 +1038,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("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 }",