Index: runtime/vm/parser.cc |
=================================================================== |
--- runtime/vm/parser.cc (revision 14233) |
+++ runtime/vm/parser.cc (working copy) |
@@ -3592,21 +3592,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 = |
+ *ExpectClassIdentifier("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, |