|
|
|
@ -1539,16 +1539,15 @@ TEST_F(ParseErrorTest, MsgReservedIdentifierOnlyInEditions) { |
|
|
|
|
"message TestMessage {\n" |
|
|
|
|
" reserved foo, bar;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"1:11: Expected field name or number range.\n"); |
|
|
|
|
"1:11: Reserved names must be string literals. (Only editions supports identifiers.)\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, MsgReservedIdentifierCantMixWithStrings) { |
|
|
|
|
TEST_F(ParseErrorTest, MsgReservedNameStringNotInEditions) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
|
"edition = \"2023\";\n" |
|
|
|
|
"message TestMessage {\n" |
|
|
|
|
" reserved foo, \"bar\";\n" |
|
|
|
|
" reserved \"foo\", \"bar\";\n" |
|
|
|
|
"}\n", |
|
|
|
|
"2:16: Expected field name identifier.\n"); |
|
|
|
|
"2:11: Reserved names must be identifiers in editions, not string literals.\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedIdentifierOnlyInEditions) { |
|
|
|
@ -1557,17 +1556,16 @@ TEST_F(ParseErrorTest, EnumReservedIdentifierOnlyInEditions) { |
|
|
|
|
" FOO = 0;\n" |
|
|
|
|
" reserved foo, bar;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"2:11: Expected enum value or number range.\n"); |
|
|
|
|
"2:11: Reserved names must be string literals. (Only editions supports identifiers.)\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedIdentifierCantMixWithStrings) { |
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedNameStringNotInEditions) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
|
"edition = \"2023\";\n" |
|
|
|
|
"enum TestEnum {\n" |
|
|
|
|
" FOO = 0;\n" |
|
|
|
|
" reserved foo, \"bar\";\n" |
|
|
|
|
" reserved \"foo\", \"bar\";\n" |
|
|
|
|
"}\n", |
|
|
|
|
"3:16: Expected enum value identifier.\n"); |
|
|
|
|
"3:11: Reserved names must be identifiers in editions, not string literals.\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, EnumValueOutOfRange) { |
|
|
|
@ -1769,13 +1767,14 @@ TEST_F(ParseErrorTest, EnumValueMissingNumber) { |
|
|
|
|
"1:5: Missing numeric value for enum constant.\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// NB: with editions, this would be accepted and would reserve a value name of "max"
|
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedStandaloneMaxNotAllowed) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
|
"enum TestEnum {\n" |
|
|
|
|
" FOO = 1;\n" |
|
|
|
|
" reserved max;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"2:11: Expected enum value or number range.\n"); |
|
|
|
|
"2:11: Reserved names must be string literals. (Only editions supports identifiers.)\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedMixNameAndNumber) { |
|
|
|
@ -1786,6 +1785,15 @@ TEST_F(ParseErrorTest, EnumReservedMixNameAndNumber) { |
|
|
|
|
"}\n", |
|
|
|
|
"2:15: Expected enum number range.\n"); |
|
|
|
|
} |
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedMixNameAndNumberEditions) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
|
"edition = \"2023\";\n" |
|
|
|
|
"enum TestEnum {\n" |
|
|
|
|
" FOO = 1;\n" |
|
|
|
|
" reserved 10, foo;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"3:15: Expected enum number range.\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedPositiveNumberOutOfRange) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
@ -1811,7 +1819,7 @@ TEST_F(ParseErrorTest, EnumReservedMissingQuotes) { |
|
|
|
|
" FOO = 1;\n" |
|
|
|
|
" reserved foo;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"2:11: Expected enum value or number range.\n"); |
|
|
|
|
"2:11: Reserved names must be string literals. (Only editions supports identifiers.)\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, EnumReservedInvalidIdentifier) { |
|
|
|
@ -1828,12 +1836,13 @@ TEST_F(ParseErrorTest, EnumReservedInvalidIdentifier) { |
|
|
|
|
// -------------------------------------------------------------------
|
|
|
|
|
// Reserved field number errors
|
|
|
|
|
|
|
|
|
|
// NB: with editions, this would be accepted and would reserve a field name of "max"
|
|
|
|
|
TEST_F(ParseErrorTest, ReservedStandaloneMaxNotAllowed) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
|
"message Foo {\n" |
|
|
|
|
" reserved max;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"1:11: Expected field name or number range.\n"); |
|
|
|
|
"1:11: Reserved names must be string literals. (Only editions supports identifiers.)\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, ReservedMixNameAndNumber) { |
|
|
|
@ -1843,13 +1852,21 @@ TEST_F(ParseErrorTest, ReservedMixNameAndNumber) { |
|
|
|
|
"}\n", |
|
|
|
|
"1:15: Expected field number range.\n"); |
|
|
|
|
} |
|
|
|
|
TEST_F(ParseErrorTest, ReservedMixNameAndNumberEditions) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
|
"edition = \"2023\";\n" |
|
|
|
|
"message Foo {\n" |
|
|
|
|
" reserved 10, foo;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"2:15: Expected field number range.\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, ReservedMissingQuotes) { |
|
|
|
|
ExpectHasErrors( |
|
|
|
|
"message Foo {\n" |
|
|
|
|
" reserved foo;\n" |
|
|
|
|
"}\n", |
|
|
|
|
"1:11: Expected field name or number range.\n"); |
|
|
|
|
"1:11: Reserved names must be string literals. (Only editions supports identifiers.)\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(ParseErrorTest, ReservedInvalidIdentifier) { |
|
|
|
|