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 { |