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

Unified Diff: dart/lib/compiler/implementation/scanner/parser.dart

Issue 11227007: Unify parsing of constructor references. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Add asRaw from other CL 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
Index: dart/lib/compiler/implementation/scanner/parser.dart
diff --git a/dart/lib/compiler/implementation/scanner/parser.dart b/dart/lib/compiler/implementation/scanner/parser.dart
index 5f3e99a6c82feb6e043647b390e897e35cc29932..73e8c0a0d968a18321fcfe88c9b87f9ba370b484 100644
--- a/dart/lib/compiler/implementation/scanner/parser.dart
+++ b/dart/lib/compiler/implementation/scanner/parser.dart
@@ -977,21 +977,14 @@ class Parser {
Token factoryKeyword = token;
listener.beginFactoryMethod(factoryKeyword);
token = token.next; // Skip 'factory'.
- token = parseIdentifier(token);
- token = parseQualifiedRestOpt(token);
- token = parseTypeVariablesOpt(token);
- Token period = null;
- if (optional('.', token)) {
- period = token;
- token = parseIdentifier(token.next);
- }
+ token = parseConstructorReference(token);
token = parseFormalParameters(token);
if (optional('=', token)) {
token = parseRedirectingFactoryBody(token);
} else {
token = parseFunctionBody(token, false);
}
- listener.endFactoryMethod(start, period, token);
+ listener.endFactoryMethod(start, token);
return token.next;
}
@@ -1652,22 +1645,22 @@ class Parser {
return false;
}
- Token parseNewExpression(Token token) {
- Token newKeyword = token;
- token = expect('new', token);
- token = parseType(token);
- bool named = false;
- if (optional('.', token)) {
- named = true;
- token = parseIdentifier(token.next);
- }
+ Token parseRequiredArguments(Token token) {
if (optional('(', token)) {
token = parseArguments(token);
} else {
listener.handleNoArguments(token);
token = listener.unexpected(token);
}
- listener.handleNewExpression(newKeyword, named);
+ return token;
+ }
+
+ Token parseNewExpression(Token token) {
+ Token newKeyword = token;
+ token = expect('new', token);
+ token = parseConstructorReference(token);
+ token = parseRequiredArguments(token);
+ listener.handleNewExpression(newKeyword);
return token;
}
@@ -1681,15 +1674,9 @@ class Parser {
(identical(value, '{'))) {
return parseLiteralListOrMap(constKeyword);
}
- token = parseType(token);
- bool named = false;
- if (optional('.', token)) {
- named = true;
- token = parseIdentifier(token.next);
- }
- expect('(', token);
- token = parseArguments(token);
- listener.handleConstExpression(constKeyword, named);
+ token = parseConstructorReference(token);
+ token = parseRequiredArguments(token);
+ listener.handleConstExpression(constKeyword);
return token;
}
« no previous file with comments | « dart/lib/compiler/implementation/scanner/listener.dart ('k') | dart/lib/compiler/implementation/ssa/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698