Chromium Code Reviews| 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..099fe64f1cd2ddc563cd254ea0af425dce88590b 100644 |
| --- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart |
| +++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart |
| @@ -850,11 +850,45 @@ abstract class Visitor1<S, E, A> implements ExpressionVisitor1<E, A>, |
| } |
| class RecursiveVisitor extends 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'; |
| + } |
|
asgerf
2015/03/04 11:36:17
I plan to steamline the Visitor in another CL. It'
|
| + |
| 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 +1007,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); |
| } |