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

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

Issue 2748183002: Parse 'while' and 'do-while' 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
« no previous file with comments | « pkg/analyzer/test/generated/parser_fasta_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 68f28a049251ef0f1592fe93f6fbaae3e3ab6795..3d451f358e887cac26258b54737b2c047c6ac1c5 100644
--- a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
+++ b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
@@ -404,6 +404,21 @@ class AstBuilder extends ScopeListener {
}
@override
+ void endWhileStatement(Token whileKeyword, Token endToken) {
+ debugEvent("WhileStatement");
+ Statement body = pop();
+ ParenthesizedExpression condition = pop();
+ pop(); // continue target
+ pop(); // break target
+ push(ast.whileStatement(
+ toAnalyzerToken(whileKeyword),
+ condition.leftParenthesis,
+ condition.expression,
+ condition.rightParenthesis,
+ body));
+ }
+
+ @override
void handleNoVariableInitializer(Token token) {
debugEvent("NoVariableInitializer");
}
@@ -958,6 +973,24 @@ class AstBuilder extends ScopeListener {
push(ast.dottedName(components));
}
+ @override
+ void endDoWhileStatement(
+ Token doKeyword, Token whileKeyword, Token semicolon) {
+ debugEvent("DoWhileStatement");
+ ParenthesizedExpression condition = pop();
+ Statement body = pop();
+ pop(); // continue target
+ pop(); // break target
+ push(ast.doStatement(
+ toAnalyzerToken(doKeyword),
+ body,
+ toAnalyzerToken(whileKeyword),
+ condition.leftParenthesis,
+ condition.expression,
+ condition.rightParenthesis,
+ toAnalyzerToken(semicolon)));
+ }
+
void endConditionalUri(Token ifKeyword, Token equalitySign) {
debugEvent("ConditionalUri");
StringLiteral libraryUri = pop();
« no previous file with comments | « pkg/analyzer/test/generated/parser_fasta_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698