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

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

Issue 2994363002: Fix the local variable lookup in the locals handler. (Closed)
Patch Set: stephen comments 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.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/element_map_impl.dart
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index ce3e0a511430a76d55c2782c835149c203c8e6b3..614fd9cce3e57717279cf811d06dc62017b72c7d 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -2165,27 +2165,31 @@ class JsKernelToElementMap extends KernelToElementMapBase
KernelToLocalsMap localsMap,
InterfaceType supertype) {
String name = _computeClosureName(node);
- KernelClosureClass cls = new KernelClosureClass.fromScopeInfo(
- node, name, _classEnvs.length, enclosingLibrary, info, localsMap);
- _classList.add(cls);
+ JClass classEntity =
+ new JClosureClass(localsMap, enclosingLibrary, _classEnvs.length, name);
+ _classList.add(classEntity);
Map<String, MemberEntity> memberMap = <String, MemberEntity>{};
_classEnvs.add(new ClosureClassEnv(memberMap));
// Create a classData and set up the interfaces and subclass
// relationships that _ensureSupertypes and _ensureThisAndRawType are doing
- var closureData = new ClassData(null,
- new ClosureClassDefinition(cls, computeSourceSpanFromTreeNode(node)));
+ var closureData = new ClassData(
+ null,
+ new ClosureClassDefinition(
+ classEntity, computeSourceSpanFromTreeNode(node)));
closureData
..isMixinApplication = false
- ..thisType =
- closureData.rawType = new InterfaceType(cls, const <DartType>[])
+ ..thisType = closureData.rawType =
+ new InterfaceType(classEntity, const <DartType>[])
..supertype = supertype
..interfaces = const <InterfaceType>[];
- var setBuilder = new _KernelOrderedTypeSetBuilder(this, cls);
+ var setBuilder = new _KernelOrderedTypeSetBuilder(this, classEntity);
_classData.add(closureData);
closureData.orderedTypeSet = setBuilder.createOrderedTypeSet(
closureData.supertype, const Link<InterfaceType>());
+ KernelClosureClass cls = new KernelClosureClass.fromScopeInfo(
+ classEntity, node, info, localsMap);
int i = 0;
for (ir.VariableDeclaration variable in info.freeVariables) {
// Make a corresponding field entity in this closure class for every
@@ -2229,7 +2233,7 @@ class JsKernelToElementMap extends KernelToElementMapBase
_memberData.length,
new BoxLocal(box.name,
localsMap.getLocalVariable(box.executableContext), member),
- cls,
+ cls.closureClassEntity,
variable.isConst,
variable.isFinal || variable.isConst);
cls.localToFieldMap[capturedLocal] = boxedField;
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.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