Index: pkg/compiler/lib/src/js_model/closure_visitors.dart |
diff --git a/pkg/compiler/lib/src/js_model/closure_visitors.dart b/pkg/compiler/lib/src/js_model/closure_visitors.dart |
index 868466b15eb02e55f583de4240de82e24966d93a..c8e451250f0633a0d2334d1cab0a98bac94b6c6c 100644 |
--- a/pkg/compiler/lib/src/js_model/closure_visitors.dart |
+++ b/pkg/compiler/lib/src/js_model/closure_visitors.dart |
@@ -25,7 +25,7 @@ class CapturedScopeBuilder extends ir.Visitor { |
/// A map of the nodes that we have flagged as necessary to generate closure |
/// classes for in a later stage. We map that node to information ascertained |
/// about variable usage in the surrounding scope. |
- Map<ir.FunctionNode, KernelScopeInfo> get _closuresToGenerate => |
+ Map<ir.TreeNode, KernelScopeInfo> get _closuresToGenerate => |
_model.closuresToGenerate; |
/// The local variables that have been declared in the current scope. |
@@ -221,6 +221,9 @@ class CapturedScopeBuilder extends ir.Visitor { |
} |
void visitInvokable(ir.TreeNode node) { |
+ assert(node is ir.Member || |
+ node is ir.FunctionExpression || |
+ node is ir.FunctionDeclaration); |
bool oldIsInsideClosure = _isInsideClosure; |
ir.TreeNode oldExecutableContext = _executableContext; |
KernelScopeInfo oldScopeInfo = _currentScopeInfo; |
@@ -274,15 +277,28 @@ class CapturedScopeBuilder extends ir.Visitor { |
return node == _executableContext; |
} |
- void translateLazyInitializer(ir.Field field) { |
+ @override |
+ void visitField(ir.Field field) { |
visitInvokable(field); |
} |
- void translateConstructorOrProcedure(ir.Node constructorOrProcedure) { |
- constructorOrProcedure.accept(this); |
+ @override |
+ void visitConstructor(ir.Constructor constructor) { |
+ visitInvokable(constructor); |
+ } |
+ |
+ @override |
+ void visitProcedure(ir.Procedure procedure) { |
+ visitInvokable(procedure); |
} |
- void visitFunctionNode(ir.FunctionNode functionNode) { |
- visitInvokable(functionNode); |
+ @override |
+ void visitFunctionExpression(ir.FunctionExpression functionExpression) { |
+ visitInvokable(functionExpression); |
+ } |
+ |
+ @override |
+ void visitFunctionDeclaration(ir.FunctionDeclaration functionDeclaration) { |
+ visitInvokable(functionDeclaration); |
} |
} |