diff --git a/mcs/errors/gcs1525-3.cs b/mcs/errors/cs1001-3.cs similarity index 60% rename from mcs/errors/gcs1525-3.cs rename to mcs/errors/cs1001-3.cs index d183dbab112a0f1781886ca1748215f36c73441d..b09054c272e88ea2214a26bf58312ef5e7f4e7c6 100755 --- a/mcs/errors/gcs1525-3.cs +++ b/mcs/errors/cs1001-3.cs @@ -1,4 +1,4 @@ -// CS1525: Unexpected symbol `)', expecting `identifier' +// CS1001: Unexpected symbol `)', expecting identifier // Line: 8 class C diff --git a/mcs/errors/cs1001-4.cs b/mcs/errors/cs1001-4.cs new file mode 100644 index 0000000000000000000000000000000000000000..451eb4b827aecedfd4e19ae24e21c2a06abdbf4a --- /dev/null +++ b/mcs/errors/cs1001-4.cs @@ -0,0 +1,9 @@ +// CS1001: Unexpected symbol `)', expecting identifier +// Line: 6 + +class B +{ + T Foo (T) + { + } +} diff --git a/mcs/errors/cs1041-2.cs b/mcs/errors/cs1001.cs similarity index 65% rename from mcs/errors/cs1041-2.cs rename to mcs/errors/cs1001.cs index b108fb6fb4d7f90d906ba6e6d2ebfa76c9e6781e..a1651fe17f40557157775295dfa8515da2cf794f 100644 --- a/mcs/errors/cs1041-2.cs +++ b/mcs/errors/cs1001.cs @@ -1,4 +1,4 @@ -// cs1001: Identifier expected +// CS1001: Unexpected symbol `)', expecting identifier // Line: 6 class T { diff --git a/mcs/errors/cs1525-18.cs b/mcs/errors/cs1041.cs similarity index 70% rename from mcs/errors/cs1525-18.cs rename to mcs/errors/cs1041.cs index c6ad28b6c7f2f2daca43f45e31de1554d94a7003..a770876f70f0c377f4eb8fef36cd3c32440640e0 100644 --- a/mcs/errors/cs1525-18.cs +++ b/mcs/errors/cs1041.cs @@ -1,4 +1,4 @@ -// CS1525: Unexpected symbol `foreach', expecting `identifier' +// CS1041: Identifier expected, `foreach' is a keyword // Line: 11 public partial class Log diff --git a/mcs/errors/gcs1041.cs b/mcs/errors/gcs1041.cs deleted file mode 100644 index 61f9833340e2e6c539f0a648bb6540845672e42d..0000000000000000000000000000000000000000 --- a/mcs/errors/gcs1041.cs +++ /dev/null @@ -1,9 +0,0 @@ -// CS1001: Identifier expected -// Line: 6 - -class B -{ - T Foo (T) - { - } -} \ No newline at end of file diff --git a/mcs/mcs/cs-parser.jay b/mcs/mcs/cs-parser.jay index 00a087318f23e8c096f209495f9200b9ec9b55b9..1f9ea888dd79334f34c670808be80656185e9b3b 100644 --- a/mcs/mcs/cs-parser.jay +++ b/mcs/mcs/cs-parser.jay @@ -443,8 +443,9 @@ using_alias_directive var lt = (Tokenizer.LocatedToken) $2; current_namespace.AddUsingAlias (lt.Value, (MemberName) $4, GetLocation ($1)); } - | USING error { - CheckIdentifierToken (yyToken, GetLocation ($2)); + | USING error + { + Error_SyntaxError (yyToken); $$ = null; } ; @@ -951,8 +952,9 @@ struct_declaration lbag.AppendToMember (current_class, GetLocation ($13)); $$ = pop_current_class (); } - | opt_attributes opt_modifiers opt_partial STRUCT error { - CheckIdentifierToken (yyToken, GetLocation ($5)); + | opt_attributes opt_modifiers opt_partial STRUCT error + { + Error_SyntaxError (yyToken); } ; @@ -1517,8 +1519,8 @@ fixed_parameter parameter_type error { + Error_SyntaxError (yyToken); Location l = GetLocation ($4); - CheckIdentifierToken (yyToken, l); $$ = new Parameter ((FullNamedExpression) $3, "NeedSomeGeneratorHere", (Parameter.Modifier) $2, (Attributes) $1, l); } | opt_attributes @@ -1643,7 +1645,7 @@ parameter_array } | opt_attributes params_modifier type error { - CheckIdentifierToken (yyToken, GetLocation ($4)); + Error_SyntaxError (yyToken); $$ = null; } ; @@ -1921,8 +1923,9 @@ interface_declaration lbag.AppendToMember (current_class, GetLocation ($11), GetLocation ($13)); $$ = pop_current_class (); } - | opt_attributes opt_modifiers opt_partial INTERFACE error { - CheckIdentifierToken (yyToken, GetLocation ($5)); + | opt_attributes opt_modifiers opt_partial INTERFACE error + { + Error_SyntaxError (yyToken); } ; @@ -6202,11 +6205,6 @@ void CheckToken (int error, int yyToken, string msg, Location loc) Report.Error (error, loc, msg); } -void CheckIdentifierToken (int yyToken, Location loc) -{ - CheckToken (1041, yyToken, "Identifier expected", loc); -} - string ConsumeStoredComment () { string s = tmpComment; @@ -6310,7 +6308,6 @@ public NamespaceEntry CurrentNamespace { } } - void Error_SyntaxError (int token) { Error_SyntaxError (0, token, "Unexpected symbol"); @@ -6320,18 +6317,28 @@ void Error_SyntaxError (int error_code, int token, string msg) { string symbol = GetSymbolName (token); string expecting = GetExpecting (); + var loc = lexer.Location - symbol.Length; if (error_code == 0) { - if (expecting == "`)'") + if (expecting == "`identifier'") { + if (token > Token.FIRST_KEYWORD && token < Token.LAST_KEYWORD) { + Report.Error (1041, loc, "Identifier expected, `{0}' is a keyword", symbol); + return; + } + + error_code = 1001; + expecting = "identifier"; + } else if (expecting == "`)'") { error_code = 1026; - else + } else { error_code = 1525; + } } if (string.IsNullOrEmpty (expecting)) - Report.Error (error_code, lexer.Location, "{1} `{0}'", symbol, msg); + Report.Error (error_code, loc, "{1} `{0}'", symbol, msg); else - Report.Error (error_code, lexer.Location, "{2} `{0}', expecting {1}", symbol, expecting, msg); + Report.Error (error_code, loc, "{2} `{0}', expecting {1}", symbol, expecting, msg); } string GetExpecting ()