Index: pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart |
diff --git a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart |
index f845e43a340000e6b7d2f7dfa227cf34e184e0f6..1f5fea0e4ab43f379a60c2e3fe484ec279471075 100644 |
--- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart |
+++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart |
@@ -2,7 +2,10 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-part of tree_ir.optimization; |
+library tree_ir.optimization.statement_rewriter; |
+ |
+import 'optimization.dart' show Pass; |
+import '../tree_ir_nodes.dart'; |
/** |
* Performs the following transformations on the tree: |
@@ -109,8 +112,8 @@ class StatementRewriter extends Transformer implements Pass { |
String get passName => 'Statement rewriter'; |
@override |
- void rewrite(RootNode node) { |
- node.replaceEachBody(visitStatement); |
+ void rewrite(FunctionDefinition node) { |
+ node.body = visitStatement(node.body); |
} |
/// True if targeting Dart. |
@@ -269,7 +272,6 @@ class StatementRewriter extends Transformer implements Pass { |
// and/or if it is better handled at the CPS level. |
return exp is Constant || |
exp is This || |
- exp is ReifyTypeVar || |
exp is CreateInvocationMirror || |
exp is InvokeStatic && exp.isEffectivelyConstant || |
exp is VariableUse && constantEnvironment.containsKey(exp.variable); |
@@ -331,18 +333,6 @@ class StatementRewriter extends Transformer implements Pass { |
return node; |
} |
- Statement visitVariableDeclaration(VariableDeclaration node) { |
- if (isEffectivelyConstant(node.value)) { |
- node.next = visitStatement(node.next); |
- } else { |
- inEmptyEnvironment(() { |
- node.next = visitStatement(node.next); |
- }); |
- } |
- node.value = visitExpression(node.value); |
- return node; |
- } |
- |
/// Process nodes right-to-left, the opposite of evaluation order in the case |
/// of argument lists.. |
void _rewriteList(List<Node> nodes) { |
@@ -422,12 +412,6 @@ class StatementRewriter extends Transformer implements Pass { |
return node; |
} |
- Statement visitFunctionDeclaration(FunctionDeclaration node) { |
- new StatementRewriter.nested(this).rewrite(node.definition); |
- node.next = visitStatement(node.next); |
- return node; |
- } |
- |
Statement visitReturn(Return node) { |
node.value = visitExpression(node.value); |
return node; |
@@ -553,10 +537,6 @@ class StatementRewriter extends Transformer implements Pass { |
return node; |
} |
- Expression visitReifyTypeVar(ReifyTypeVar node) { |
- return node; |
- } |
- |
Expression visitLiteralList(LiteralList node) { |
_rewriteList(node.values); |
return node; |