Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(391)

Unified Diff: pkg/compiler/lib/src/kernel/env.dart

Issue 2994353002: Fix the locals lookup of variables and partial implementation of boxing of variables.
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map_impl.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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];
}
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map_impl.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698