Index: runtime/vm/parser.cc |
=================================================================== |
--- runtime/vm/parser.cc (revision 14293) |
+++ runtime/vm/parser.cc (working copy) |
@@ -3076,7 +3076,7 @@ |
const intptr_t class_pos = TokenPos(); |
ExpectToken(Token::kCLASS); |
const intptr_t classname_pos = TokenPos(); |
- String& class_name = *ExpectClassIdentifier("class name expected"); |
+ String& class_name = *ExpectUserDefinedTypeIdentifier("class name expected"); |
if (FLAG_trace_parser) { |
OS::Print("TopLevel parsing class '%s'\n", class_name.ToCString()); |
} |
@@ -3320,7 +3320,7 @@ |
const intptr_t alias_name_pos = TokenPos(); |
const String* alias_name = |
- ExpectClassIdentifier("function alias name expected"); |
+ ExpectUserDefinedTypeIdentifier("function alias name expected"); |
// Parse the type parameters of the function type. |
ParseTypeParameters(alias_owner); |
@@ -3402,7 +3402,8 @@ |
const intptr_t interface_pos = TokenPos(); |
ExpectToken(Token::kINTERFACE); |
const intptr_t interfacename_pos = TokenPos(); |
- String& interface_name = *ExpectClassIdentifier("interface name expected"); |
+ String& interface_name = |
+ *ExpectUserDefinedTypeIdentifier("interface name expected"); |
if (FLAG_trace_parser) { |
OS::Print("TopLevel parsing interface '%s'\n", interface_name.ToCString()); |
} |
@@ -3589,21 +3590,18 @@ |
do { |
ConsumeToken(); |
SkipMetadata(); |
- if (CurrentToken() != Token::kIDENT) { |
- ErrorMsg("type parameter name expected"); |
- } |
- String& type_parameter_name = *CurrentLiteral(); |
const intptr_t type_parameter_pos = TokenPos(); |
+ String& type_parameter_name = |
+ *ExpectUserDefinedTypeIdentifier("type parameter expected"); |
// Check for duplicate type parameters. |
for (intptr_t i = 0; i < index; i++) { |
existing_type_parameter ^= type_parameters_array.At(i); |
existing_type_parameter_name = existing_type_parameter.name(); |
if (existing_type_parameter_name.Equals(type_parameter_name)) { |
- ErrorMsg("duplicate type parameter '%s'", |
+ ErrorMsg(type_parameter_pos, "duplicate type parameter '%s'", |
type_parameter_name.ToCString()); |
} |
} |
- ConsumeToken(); |
if (CurrentToken() == Token::kEXTENDS) { |
ConsumeToken(); |
// A bound may refer to the owner of the type parameter it applies to, |
@@ -6584,7 +6582,7 @@ |
} |
-String* Parser::ExpectClassIdentifier(const char* msg) { |
+String* Parser::ExpectUserDefinedTypeIdentifier(const char* msg) { |
if (CurrentToken() != Token::kIDENT) { |
ErrorMsg("%s", msg); |
} |