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

Unified Diff: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart

Issue 1353843002: dart2js cps: Support sync* and yield. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 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
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart ('k') | pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
index 3b6f76ee79013d81ef939fb1acb27b58a1bb023e..62ba99b99cd3bb68bb76908d578be6c12d65e5a4 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
@@ -938,6 +938,22 @@ class Await extends Expression {
}
}
+class Yield extends Statement {
+ Statement next;
+ Expression input;
+ final bool hasStar;
+
+ Yield(this.input, this.hasStar, this.next);
+
+ accept(StatementVisitor visitor) {
+ return visitor.visitYield(this);
+ }
+
+ accept1(StatementVisitor1 visitor, arg) {
+ return visitor.visitYield(this, arg);
+ }
+}
+
abstract class ExpressionVisitor<E> {
E visitExpression(Expression node) => node.accept(this);
E visitVariableUse(VariableUse node);
@@ -1027,6 +1043,7 @@ abstract class StatementVisitor<S> {
S visitTry(Try node);
S visitUnreachable(Unreachable node);
S visitForeignStatement(ForeignStatement node);
+ S visitYield(Yield node);
}
abstract class StatementVisitor1<S, A> {
@@ -1044,6 +1061,7 @@ abstract class StatementVisitor1<S, A> {
S visitTry(Try node, A arg);
S visitUnreachable(Unreachable node, A arg);
S visitForeignStatement(ForeignStatement node, A arg);
+ S visitYield(Yield node, A arg);
}
abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
@@ -1253,6 +1271,11 @@ abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
visitAwait(Await node) {
visitExpression(node.input);
}
+
+ visitYield(Yield node) {
+ visitExpression(node.input);
+ visitStatement(node.next);
+ }
}
abstract class Transformer implements ExpressionVisitor<Expression>,
@@ -1507,6 +1530,11 @@ class RecursiveTransformer extends Transformer {
node.input = visitExpression(node.input);
return node;
}
+
+ visitYield(Yield node) {
+ node.input = visitExpression(node.input);
+ return node;
+ }
}
class FallthroughTarget {
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart ('k') | pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698