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 89fb18c1451a9493e626b1f2708b68a6c579620b..a089defc3827a327e0927a4b884b3a6f1f22cc4b 100644 |
--- a/pkg/compiler/lib/src/js_model/closure_visitors.dart |
+++ b/pkg/compiler/lib/src/js_model/closure_visitors.dart |
@@ -103,9 +103,13 @@ class CapturedScopeBuilder extends ir.Visitor { |
} |
assert(_scopeInfoMap[_nodeToEntity(node)] != null); |
+ KernelScopeInfo from = _scopeInfoMap[_nodeToEntity(node)]; |
_scopesCapturedInClosureMap[node] = new KernelCapturedScope( |
capturedVariablesForScope, |
_nodeToEntity(_executableContext), |
+ from.localsUsedInTryOrSync, |
+ from.freeVariables, |
+ from.localsMap, |
thisLocal); |
} |
} |
@@ -221,6 +225,9 @@ class CapturedScopeBuilder extends ir.Visitor { |
scope.boxedVariables, |
boxedLoopVariables, |
scope.context, |
+ scope.localsUsedInTryOrSync, |
+ scope.freeVariables, |
+ _localsMap, |
scope.thisLocal); |
} |
@@ -233,7 +240,7 @@ class CapturedScopeBuilder extends ir.Visitor { |
// field, constructor, or method that is being analyzed. |
_isInsideClosure = _outermostNode != null; |
_executableContext = node; |
- _currentScopeInfo = new KernelScopeInfo(_nodeToThisLocal(node)); |
+ _currentScopeInfo = new KernelScopeInfo(_nodeToThisLocal(node), _localsMap); |
if (_isInsideClosure) { |
_closuresToGenerate[node] = _currentScopeInfo; |
} else { |