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

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

Issue 10831332: Support new getter syntax. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 4 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 e18389ea55cd06a2b9e9a77b59edeb7a0b393c4b..5068ee6eeeb005b4725bc57f64631ef6aa4a0edc 100644
--- a/dart/lib/compiler/implementation/scanner/parser.dart
+++ b/dart/lib/compiler/implementation/scanner/parser.dart
@@ -83,6 +83,15 @@ class Parser {
}
}
+ Token parseFormalParametersOpt(Token token) {
+ if (optional('(', token)) {
+ return parseFormalParameters(token);
+ } else {
+ listener.handleNoFormalParameters(token);
+ return token;
+ }
+ }
+
Token parseFormalParameters(Token token) {
Token begin = token;
listener.beginFormalParameters(begin);
@@ -363,7 +372,7 @@ class Parser {
// Loop to allow the listener to rewrite the token stream for
// error handling.
final String value = token.stringValue;
- if (value === '(') {
+ if (value === '(' || value === '{' || value === '=>') {
isField = false;
break;
} else if ((value === '=') || (value === ';') || (value === ',')) {
@@ -390,7 +399,7 @@ class Parser {
expectSemicolon(token);
listener.endTopLevelFields(fieldCount, start, token);
} else {
- token = parseFormalParameters(token);
+ token = parseFormalParametersOpt(token);
token = parseFunctionBody(token, false);
listener.endTopLevelMethod(start, getOrSet, token);
}
@@ -603,7 +612,8 @@ class Parser {
// Loop to allow the listener to rewrite the token stream for
// error handling.
final String value = token.stringValue;
- if ((value === '(') || (value === '.')) {
+ if ((value === '(') || (value === '.') || (value === '{') ||
kasperl 2012/08/20 12:55:31 So here all the === comparisons are wrapped in ()
ahe 2012/08/20 13:26:17 Done.
+ (value === '=>')) {
isField = false;
break;
} else if ((value === '=') || (value === ';') || (value === ',')) {
@@ -634,7 +644,7 @@ class Parser {
listener.endFields(fieldCount, start, token);
} else {
token = parseQualifiedRestOpt(token);
- token = parseFormalParameters(token);
+ token = parseFormalParametersOpt(token);
token = parseInitializersOpt(token);
token = parseFunctionBody(token, false);
listener.endMethod(getOrSet, start, token);
@@ -696,7 +706,7 @@ class Parser {
}
token = parseQualifiedRestOpt(token);
listener.endFunctionName(token);
- token = parseFormalParameters(token);
+ token = parseFormalParametersOpt(token);
token = parseInitializersOpt(token);
token = parseFunctionBody(token, false);
listener.endFunction(getOrSet, token);

Powered by Google App Engine
This is Rietveld 408576698