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

Unified Diff: pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart

Issue 2747083005: Parse for-in statements with Fasta. (Closed)
Patch Set: Created 3 years, 9 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/front_end/lib/src/fasta/analyzer/ast_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
index e4e9f48e0cc86b17888070951a485d1e0cceb751..cde40d5945fd4c1ce66e3ce414384981d3657472 100644
--- a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
+++ b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
@@ -654,6 +654,51 @@ class AstBuilder extends ScopeListener {
push(NullValue.ParameterDefaultValue);
}
+ @override
+ void endForInExpression(Token token) {
+ debugEvent("ForInExpression");
+ }
+
+ @override
+ void endForIn(Token awaitToken, Token forToken, Token leftParenthesis,
+ Token inKeyword, Token rightParenthesis, Token endToken) {
+ debugEvent("ForInExpression");
+ Statement body = pop();
+ Expression iterator = pop();
+ Object variableOrDeclaration = pop();
+ pop(); // local scope
+ pop(); // continue target
+ pop(); // break target
+ if (variableOrDeclaration is SimpleIdentifier) {
+ push(ast.forEachStatementWithReference(
+ toAnalyzerToken(awaitToken),
+ toAnalyzerToken(forToken),
+ toAnalyzerToken(leftParenthesis),
+ variableOrDeclaration,
+ toAnalyzerToken(inKeyword),
+ iterator,
+ toAnalyzerToken(rightParenthesis),
+ body));
+ } else {
+ var statement = variableOrDeclaration as VariableDeclarationStatement;
+ VariableDeclarationList variableList = statement.variables;
+ push(ast.forEachStatementWithDeclaration(
+ toAnalyzerToken(awaitToken),
+ toAnalyzerToken(forToken),
+ toAnalyzerToken(leftParenthesis),
+ ast.declaredIdentifier(
+ variableList.documentationComment,
+ variableList.metadata,
+ variableList.keyword,
+ variableList.type,
+ variableList.variables.single.name),
+ toAnalyzerToken(inKeyword),
+ iterator,
+ toAnalyzerToken(rightParenthesis),
+ body));
+ }
+ }
+
void endFormalParameter(
Token covariantKeyword, Token thisKeyword, FormalParameterType kind) {
debugEvent("FormalParameter");
« no previous file with comments | « pkg/compiler/lib/src/parser/node_listener.dart ('k') | pkg/front_end/lib/src/fasta/kernel/body_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698