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

Unified Diff: pkg/fasta/lib/src/source/diet_listener.dart

Issue 2652663005: Handle field initializers correctly. (Closed)
Patch Set: Created 3 years, 11 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 | « pkg/fasta/lib/src/kernel/body_builder.dart ('k') | pkg/fasta/lib/src/source/outline_builder.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/fasta/lib/src/source/diet_listener.dart
diff --git a/pkg/fasta/lib/src/source/diet_listener.dart b/pkg/fasta/lib/src/source/diet_listener.dart
index 688590e71e4709adee6501381c45001408f5e17b..84fdf0d17acc0962bc6f6f9313a6f0fb63449fe5 100644
--- a/pkg/fasta/lib/src/source/diet_listener.dart
+++ b/pkg/fasta/lib/src/source/diet_listener.dart
@@ -71,6 +71,7 @@ class DietListener extends StackListener {
: library = library,
memberScope = library.scope;
+ @override
Uri get uri => library.uri;
void discard(int n) {
@@ -79,62 +80,81 @@ class DietListener extends StackListener {
}
}
+ @override
void endMetadataStar(int count, bool forParameter) {
debugEvent("MetadataStar");
}
+ @override
void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {
debugEvent("Metadata");
popIfNotNull(periodBeforeName);
discard(1);
}
+ @override
void endPartOf(Token partKeyword, Token semicolon) {
debugEvent("PartOf");
discard(1);
}
+ @override
void handleNoArguments(Token token) {
debugEvent("NoArguments");
}
+ @override
void handleModifiers(int count) {
debugEvent("Modifiers");
}
+ @override
void handleNoTypeArguments(Token token) {
debugEvent("NoTypeArguments");
}
+ @override
void handleNoType(Token token) {
debugEvent("NoType");
}
+ @override
void endType(Token beginToken, Token endToken) {
debugEvent("Type");
discard(1);
}
+ @override
void endTypeList(int count) {
debugEvent("TypeList");
}
+ @override
void endMixinApplication() {
debugEvent("MixinApplication");
}
+ @override
void endTypeArguments(int count, Token beginToken, Token endToken) {
debugEvent("TypeArguments");
}
+ @override
void endFieldInitializer(Token assignmentOperator) {
debugEvent("FieldInitializer");
}
+ @override
+ void handleNoFieldInitializer(Token token) {
+ debugEvent("NoFieldInitializer");
+ }
+
+ @override
void handleNoTypeVariables(Token token) {
debugEvent("NoTypeVariables");
}
+ @override
void endFormalParameters(int count, Token beginToken, Token endToken) {
debugEvent("FormalParameters");
assert(count == 0); // Count is always 0 as the diet parser skips formals.
@@ -145,6 +165,7 @@ class DietListener extends StackListener {
push(beginToken);
}
+ @override
void handleNoFormalParameters(Token token) {
debugEvent("NoFormalParameters");
if (identical(peek(), "-")) {
@@ -154,12 +175,14 @@ class DietListener extends StackListener {
push(token);
}
+ @override
void endFunctionTypeAlias(Token typedefKeyword, Token endToken) {
debugEvent("FunctionTypeAlias");
discard(2); // Name + endToken.
checkEmpty();
}
+ @override
void endFields(int count, Token beginToken, Token endToken) {
debugEvent("Fields");
List<String> names = popList(count);
@@ -167,10 +190,12 @@ class DietListener extends StackListener {
buildFields(beginToken, false, builder.isInstanceMember);
}
+ @override
void handleAsyncModifier(Token asyncToken, Token startToken) {
debugEvent("AsyncModifier");
}
+ @override
void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) {
debugEvent("TopLevelMethod");
Token bodyToken = pop();
@@ -179,28 +204,34 @@ class DietListener extends StackListener {
buildFunctionBody(bodyToken, lookupBuilder(beginToken, getOrSet, name));
}
+ @override
void handleNoFunctionBody(Token token) {
debugEvent("NoFunctionBody");
}
+ @override
void endTopLevelFields(int count, Token beginToken, Token endToken) {
debugEvent("TopLevelFields");
discard(count);
buildFields(beginToken, true, false);
}
+ @override
void handleVoidKeyword(Token token) {
debugEvent("VoidKeyword");
}
+ @override
void handleNoInitializers() {
debugEvent("NoInitializers");
}
+ @override
void endInitializers(int count, Token beginToken, Token endToken) {
debugEvent("Initializers");
}
+ @override
void handleQualified(Token period) {
debugEvent("handleQualified");
// TODO(ahe): Shared with outline_builder.dart.
@@ -209,92 +240,112 @@ class DietListener extends StackListener {
push("$receiver.$name");
}
+ @override
void endLibraryName(Token libraryKeyword, Token semicolon) {
debugEvent("endLibraryName");
discard(1);
}
+ @override
void beginLiteralString(Token token) {
debugEvent("beginLiteralString");
}
+ @override
void endLiteralString(int interpolationCount) {
debugEvent("endLiteralString");
discard(interpolationCount);
}
+ @override
void handleStringJuxtaposition(int literalCount) {
debugEvent("StringJuxtaposition");
}
+ @override
void endDottedName(int count, Token firstIdentifier) {
debugEvent("DottedName");
discard(count);
}
+ @override
void endConditionalUri(Token ifKeyword, Token equalitySign) {
debugEvent("ConditionalUri");
}
+ @override
void endConditionalUris(int count) {
debugEvent("ConditionalUris");
}
+ @override
void handleOperatorName(Token operatorKeyword, Token token) {
debugEvent("OperatorName");
push(token.stringValue);
}
+ @override
void endIdentifierList(int count) {
debugEvent("IdentifierList");
discard(count);
}
+ @override
void endShow(Token showKeyword) {
debugEvent("Show");
}
+ @override
void endHide(Token hideKeyword) {
debugEvent("Hide");
}
+ @override
void endCombinators(int count) {
debugEvent("Combinators");
}
+ @override
void endImport(Token importKeyword, Token DeferredKeyword, Token asKeyword,
Token semicolon) {
debugEvent("Import");
popIfNotNull(asKeyword);
}
+ @override
void endExport(Token exportKeyword, Token semicolon) {
debugEvent("Export");
}
+ @override
void endPart(Token partKeyword, Token semicolon) {
debugEvent("Part");
}
+ @override
void endTypeVariable(Token token, Token extendsOrSuper) {
debugEvent("TypeVariable");
discard(1);
}
+ @override
void endTypeVariables(int count, Token beginToken, Token endToken) {
debugEvent("TypeVariables");
}
+ @override
void handleModifier(Token token) {
debugEvent("Modifier");
}
+ @override
void endConstructorReference(
Token start, Token periodBeforeName, Token endToken) {
debugEvent("ConstructorReference");
popIfNotNull(periodBeforeName);
}
+ @override
void endFactoryMethod(Token beginToken, Token endToken) {
debugEvent("FactoryMethod");
BeginGroupToken bodyToken = pop();
@@ -306,11 +357,13 @@ class DietListener extends StackListener {
buildFunctionBody(bodyToken, lookupBuilder(beginToken, null, name));
}
+ @override
void endRedirectingFactoryBody(Token beginToken, Token endToken) {
debugEvent("RedirectingFactoryBody");
discard(1); // ConstructorReference.
}
+ @override
void endMethod(Token getOrSet, Token beginToken, Token endToken) {
debugEvent("Method");
Token bodyToken = pop();
@@ -354,11 +407,13 @@ class DietListener extends StackListener {
token, isTopLevel);
}
+ @override
void endMember() {
debugEvent("Member");
checkEmpty();
}
+ @override
void beginClassBody(Token token) {
debugEvent("beginClassBody");
String name = pop();
@@ -368,6 +423,7 @@ class DietListener extends StackListener {
memberScope = currentClass.computeInstanceScope(memberScope);
}
+ @override
void endClassBody(int memberCount, Token beginToken, Token endToken) {
debugEvent("ClassBody");
currentClass = null;
@@ -375,12 +431,14 @@ class DietListener extends StackListener {
memberScope = library.scope;
}
+ @override
void endClassDeclaration(int interfacesCount, Token beginToken,
Token extendsKeyword, Token implementsKeyword, Token endToken) {
debugEvent("ClassDeclaration");
checkEmpty();
}
+ @override
void endEnum(Token enumKeyword, Token endBrace, int count) {
debugEvent("Enum");
discard(count);
@@ -388,6 +446,7 @@ class DietListener extends StackListener {
checkEmpty();
}
+ @override
void endNamedMixinApplication(
Token classKeyword, Token implementsKeyword, Token endToken) {
debugEvent("NamedMixinApplication");
@@ -464,6 +523,7 @@ class DietListener extends StackListener {
return builder;
}
+ @override
void debugEvent(String name) {
// print(" ${stack.join('\n ')}");
// print(name);
« no previous file with comments | « pkg/fasta/lib/src/kernel/body_builder.dart ('k') | pkg/fasta/lib/src/source/outline_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698