Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(638)

Unified Diff: runtime/vm/parser.cc

Issue 11343044: Disallow 'dynamic' as type parameter name (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/parser.h ('k') | tests/co19/co19-runtime.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « runtime/vm/parser.h ('k') | tests/co19/co19-runtime.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698