Index: pkg/compiler/lib/src/kernel/env.dart |
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart |
index af566a0e9ab129f98428fc2832a5e276d3a7b1c9..6eb60504cda203974fb2046ff4656981e1eacf30 100644 |
--- a/pkg/compiler/lib/src/kernel/env.dart |
+++ b/pkg/compiler/lib/src/kernel/env.dart |
@@ -375,26 +375,40 @@ class ClassEnvImpl implements ClassEnv { |
} |
} |
-class ClosureClassEnv implements ClassEnv { |
+class ClosureClassEnv extends RecordContainerEnv { |
+ ClosureClassEnv(Map<String, MemberEntity> memberMap) : super(memberMap); |
+ |
+ @override |
+ MemberEntity lookupMember(KernelToElementMap elementMap, String name, |
+ {bool setter: false}) { |
+ if (setter) { |
+ // All closure fields are final. |
+ return null; |
+ } |
+ return super.lookupMember(elementMap, name, setter: setter); |
+ } |
+} |
+ |
+class RecordContainerEnv implements ClassEnv { |
final Map<String, MemberEntity> _memberMap; |
- ClosureClassEnv(this._memberMap); |
+ RecordContainerEnv(this._memberMap); |
@override |
void forEachConstructorBody(void f(ConstructorBodyEntity constructor)) { |
- // We do not create constructor bodies for closure classes. |
+ // We do not create constructor bodies for containers. |
} |
@override |
void forEachConstructor( |
KernelToElementMap elementMap, void f(ConstructorEntity constructor)) { |
- // We do not create constructors for closure classes. |
+ // We do not create constructors for containers. |
} |
@override |
ConstructorEntity lookupConstructor( |
KernelToElementMap elementMap, String name) { |
- // We do not create constructors for closure classes. |
+ // We do not create constructors for containers. |
return null; |
} |
@@ -407,10 +421,6 @@ class ClosureClassEnv implements ClassEnv { |
@override |
MemberEntity lookupMember(KernelToElementMap elementMap, String name, |
{bool setter: false}) { |
- if (setter) { |
- // All closure fields are final. |
- return null; |
- } |
return _memberMap[name]; |
} |