| 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 405c93a75e8b7a5b107641d0866809dda17968a9..abd36c94fc46982ac5648efbf979bc4ffd992805 100644
|
| --- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| +++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| @@ -107,7 +107,19 @@ class StatementRewriter extends Visitor<Statement, Expression> implements Pass {
|
| return newJump != null ? newJump : jump;
|
| }
|
|
|
| - void rewrite(FunctionDefinition definition) {
|
| + void rewrite(ExecutableDefinition definition) => definition.acceptPass(this);
|
| +
|
| + void rewriteFieldDefinition(FieldDefinition definition) {
|
| + environment = <Assign>[];
|
| + definition.body = visitStatement(definition.body);
|
| +
|
| + // TODO(kmillikin): Allow definitions that are not propagated. Here,
|
| + // this means rebuilding the binding with a recursively unnamed definition,
|
| + // or else introducing a variable definition and an assignment.
|
| + assert(environment.isEmpty);
|
| + }
|
| +
|
| + void rewriteFunctionDefinition(FunctionDefinition definition) {
|
| if (definition.isAbstract) return;
|
|
|
| environment = <Assign>[];
|
| @@ -119,6 +131,7 @@ class StatementRewriter extends Visitor<Statement, Expression> implements Pass {
|
| assert(environment.isEmpty);
|
| }
|
|
|
| +
|
| Expression visitExpression(Expression e) => e.processed ? e : e.accept(this);
|
|
|
| Expression visitVariable(Variable node) {
|
|
|