Index: lib/compiler/implementation/ssa/closure.dart |
diff --git a/lib/compiler/implementation/ssa/closure.dart b/lib/compiler/implementation/ssa/closure.dart |
index ab2d6a48c541bdbf94572232acce6b9d99a23635..7d90b58eec68b241cc4e0c75f09aa9b7ac7eaccb 100644 |
--- a/lib/compiler/implementation/ssa/closure.dart |
+++ b/lib/compiler/implementation/ssa/closure.dart |
@@ -240,6 +240,8 @@ class ClosureTranslator extends AbstractVisitor { |
Element box = null; |
Map<Element, Element> scopeMapping = new Map<Element, Element>(); |
for (Element element in scopeVariables) { |
+ // No need to box non-assignable elements. |
+ if (!element.isAssignable()) continue; |
if (capturedVariableMapping.containsKey(element)) { |
if (box == null) { |
// TODO(floitsch): construct better box names. |
@@ -354,9 +356,6 @@ class ClosureTranslator extends AbstractVisitor { |
} |
scopeVariables = new List<Element>(); |
- // TODO(floitsch): a named function is visible from inside itself. Add |
- // the element to the block. |
- |
// We have to declare the implicit 'this' parameter. |
if (!insideClosure && closureData.thisElement !== null) { |
declareLocal(closureData.thisElement); |