Index: pkg/compiler/lib/src/closure.dart |
diff --git a/pkg/compiler/lib/src/closure.dart b/pkg/compiler/lib/src/closure.dart |
index 94eb03da53100403fe44cad8437f5caa854c3430..1fb4e5000d4b030cfbc8693d5c7bad91a0ed899d 100644 |
--- a/pkg/compiler/lib/src/closure.dart |
+++ b/pkg/compiler/lib/src/closure.dart |
@@ -499,15 +499,13 @@ class ClosureClassElement extends ClassElementX { |
/// fields. |
class BoxLocal extends Local { |
final String name; |
- final ExecutableElement executableContext; |
+ final Entity executableContext; |
+ final MemberEntity memberContext; |
final int hashCode = _nextHashCode = (_nextHashCode + 10007).toUnsigned(30); |
static int _nextHashCode = 0; |
- BoxLocal(this.name, this.executableContext); |
- |
- @override |
- MemberElement get memberContext => executableContext.memberContext; |
+ BoxLocal(this.name, this.executableContext, this.memberContext); |
String toString() => 'BoxLocal($name)'; |
} |
@@ -549,7 +547,7 @@ class BoxFieldElement extends ElementX |
} |
@override |
- MemberElement get memberContext => box.executableContext.memberContext; |
+ MemberElement get memberContext => box.memberContext; |
@override |
List<FunctionElement> get nestedClosures => const <FunctionElement>[]; |
@@ -1228,7 +1226,8 @@ class ClosureTranslator extends Visitor { |
if (box == null) { |
// TODO(floitsch): construct better box names. |
String boxName = getBoxFieldName(closureFieldCounter++); |
- box = new BoxLocal(boxName, executableContext); |
+ box = new BoxLocal( |
+ boxName, executableContext, executableContext.memberContext); |
} |
String elementName = variable.name; |
String boxedName = |