Index: pkg/compiler/lib/src/tree/nodes.dart |
diff --git a/pkg/compiler/lib/src/tree/nodes.dart b/pkg/compiler/lib/src/tree/nodes.dart |
index e239366b3c2592e8bc89c1ca6486cf0c69d2a500..36a9d5d0423ff8ae5951f082b342867eca5ac167 100644 |
--- a/pkg/compiler/lib/src/tree/nodes.dart |
+++ b/pkg/compiler/lib/src/tree/nodes.dart |
@@ -9,6 +9,7 @@ abstract class Visitor<R> { |
R visitNode(Node node); |
+ R visitAssert(Assert node) => visitStatement(node); |
R visitAsyncForIn(AsyncForIn node) => visitLoop(node); |
R visitAsyncModifier(AsyncModifier node) => visitNode(node); |
R visitAwait(Await node) => visitExpression(node); |
@@ -146,6 +147,7 @@ abstract class Node extends NullTreeElementMixin implements Spannable { |
Token getEndToken(); |
+ Assert asAssert() => null; |
AsyncModifier asAsyncModifier() => null; |
Await asAwait() => null; |
Block asBlock() => null; |
@@ -1207,6 +1209,30 @@ class Await extends Expression { |
Token getEndToken() => expression.getEndToken(); |
} |
+class Assert extends Statement { |
+ final Token assertToken; |
+ final Expression condition; |
+ /** Message may be `null`. */ |
+ final Expression message; |
+ final Token semicolonToken; |
+ |
+ Assert(this.assertToken, this.condition, this.message, this.semicolonToken); |
+ |
+ Assert asAssert() => this; |
+ |
+ bool get hasMessage => message != null; |
+ |
+ accept(Visitor visitor) => visitor.visitAssert(this); |
+ |
+ visitChildren(Visitor visitor) { |
+ condition.accept(visitor); |
+ if (message != null) message.accept(visitor); |
+ } |
+ |
+ Token getBeginToken() => assertToken; |
+ Token getEndToken() => semicolonToken; |
+} |
+ |
class Rethrow extends Statement { |
final Token throwToken; |
final Token endToken; |