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

Unified Diff: pkg/compiler/lib/src/parser/parser.dart

Issue 2385643003: Fixes in dart2js parser to be able to parse files without the diet-parser (Closed)
Patch Set: Created 4 years, 3 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: pkg/compiler/lib/src/parser/parser.dart
diff --git a/pkg/compiler/lib/src/parser/parser.dart b/pkg/compiler/lib/src/parser/parser.dart
index f9998ca51bb520d10747852c4553d95d2b333574..0d451624440f7ffee3edece20754d424f33fcaa0 100644
--- a/pkg/compiler/lib/src/parser/parser.dart
+++ b/pkg/compiler/lib/src/parser/parser.dart
@@ -112,7 +112,6 @@ class Parser {
int count = 0;
while (!identical(token.kind, EOF_TOKEN)) {
token = parseTopLevelDeclaration(token);
- listener.endTopLevelDeclaration(token);
count++;
}
listener.endCompilationUnit(count, token);
@@ -120,6 +119,12 @@ class Parser {
}
Token parseTopLevelDeclaration(Token token) {
+ token = _parseTopLevelDeclaration(token);
+ listener.endTopLevelDeclaration(token);
Siggi Cherem (dart-lang) 2016/09/30 22:28:07 note: this moved down here because when we parse a
+ return token;
+ }
+
+ Token _parseTopLevelDeclaration(Token token) {
token = parseMetadataStar(token);
final String value = token.stringValue;
if ((identical(value, 'abstract') && optional('class', token.next)) ||
@@ -1357,11 +1362,14 @@ class Parser {
Token parseMember(Token token) {
token = parseMetadataStar(token);
- if (isFactoryDeclaration(token)) {
- return parseFactoryMethod(token);
- }
Token start = token;
listener.beginMember(token);
+ if (isFactoryDeclaration(token)) {
+ token = parseFactoryMethod(token);
+ listener.endMember();
+ assert (token != null);
+ return token;
+ }
Link<Token> identifiers = findMemberName(token);
if (identifiers.isEmpty) {
@@ -1427,15 +1435,18 @@ class Parser {
if (identical(token.kind, EOF_TOKEN)) {
// TODO(ahe): This is a hack, see parseTopLevelMember.
listener.endFields(1, start, token);
+ listener.endMember();
return token;
}
}
}
var modifiers = identifiers.reverse();
- return isField
+ token = isField
? parseFields(start, modifiers, type, getOrSet, name, false)
: parseMethod(start, modifiers, type, getOrSet, name);
+ listener.endMember();
+ return token;
}
Token parseMethod(Token start, Link<Token> modifiers, Token type,

Powered by Google App Engine
This is Rietveld 408576698