Index: pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart |
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart |
index fee1dd7adcb33d52b63659533e63a44f2bcabc96..90c0b69577ac486b89976498474657cb73a978eb 100644 |
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart |
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart |
@@ -172,6 +172,10 @@ class BlockCollector extends StatementVisitor { |
_addStatement(node); |
visitStatement(node.next); |
} |
+ |
+ visitForeignStatement(ForeignStatement node) { |
+ _addStatement(node); |
+ } |
} |
class TreeTracer extends TracerUtil with StatementVisitor { |
@@ -321,6 +325,11 @@ class TreeTracer extends TracerUtil with StatementVisitor { |
String expr(Expression e) { |
return e.accept(new SubexpressionVisitor(names)); |
} |
+ |
+ @override |
+ visitForeignStatement(ForeignStatement node) { |
+ printStatement(null, 'foreign'); |
+ } |
} |
class SubexpressionVisitor extends ExpressionVisitor<String> { |
@@ -511,6 +520,12 @@ class SubexpressionVisitor extends ExpressionVisitor<String> { |
} |
@override |
+ String visitForeignExpression(ForeignExpression node) { |
+ String arguments = node.arguments.map(visitExpression).join(', '); |
+ return 'Foreign "${node.codeTemplate}"($arguments)'; |
+ } |
+ |
+ @override |
String visitApplyBuiltinOperator(ApplyBuiltinOperator node) { |
String args = node.arguments.map(visitExpression).join(', '); |
return 'ApplyBuiltinOperator ${node.operator} ($args)'; |