| 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 e0adf01cd87078cdc1c2eadb4d497eee1266bfa0..811fff7b7d66d56252826bdbb1fc27300c29bbbb 100644
|
| --- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
|
| +++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
|
| @@ -119,6 +119,8 @@ class Variable extends Node {
|
| Variable(this.host, this.element) {
|
| assert(host != null);
|
| }
|
| +
|
| + String toString() => element == null ? 'Variable' : element.toString();
|
| }
|
|
|
| /// Read the value of a variable.
|
| @@ -850,11 +852,47 @@ abstract class Visitor1<S, E, A> implements ExpressionVisitor1<E, A>,
|
| }
|
|
|
| class RecursiveVisitor extends Visitor {
|
| + // TODO(asgerf): Clean up the tree visitor.
|
| +
|
| + visitExecutableDefinition(ExecutableDefinition node) {
|
| + if (node is ConstructorDefinition) return visitConstructorDefinition(node);
|
| + if (node is FunctionDefinition) return visitFunctionDefinition(node);
|
| + if (node is FieldDefinition) return visitFieldDefinition(node);
|
| + throw 'Unexpected ExecutableDefinition: $node';
|
| + }
|
| +
|
| visitFunctionDefinition(FunctionDefinition node) {
|
| node.parameters.forEach(visitVariable);
|
| + if (node.body != null) visitStatement(node.body);
|
| + }
|
| +
|
| + visitConstructorDefinition(ConstructorDefinition node) {
|
| + if (node.initializers != null) node.initializers.forEach(visitInitializer);
|
| + visitFunctionDefinition(node);
|
| + }
|
| +
|
| + visitFieldDefinition(FieldDefinition node) {
|
| + if (node.body != null) {
|
| + visitStatement(node.body);
|
| + }
|
| + }
|
| +
|
| + visitInitializer(Initializer node) {
|
| + if (node is FieldInitializer) {
|
| + return visitFieldInitializer(node);
|
| + } else {
|
| + return visitSuperInitializer(node);
|
| + }
|
| + }
|
| +
|
| + visitFieldInitializer(FieldInitializer node) {
|
| visitStatement(node.body);
|
| }
|
|
|
| + visitSuperInitializer(SuperInitializer node) {
|
| + node.arguments.forEach(visitStatement);
|
| + }
|
| +
|
| visitVariable(Variable node) {}
|
|
|
| visitVariableUse(VariableUse node) {
|
| @@ -973,14 +1011,6 @@ class RecursiveVisitor extends Visitor {
|
| visitStatement(node.catchBody);
|
| }
|
|
|
| - visitFieldInitializer(FieldInitializer node) {
|
| - visitStatement(node.body);
|
| - }
|
| -
|
| - visitSuperInitializer(SuperInitializer node) {
|
| - node.arguments.forEach(visitStatement);
|
| - }
|
| -
|
| visitGetField(GetField node) {
|
| visitExpression(node.object);
|
| }
|
|
|