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

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

Issue 3000233002: Remove KernelToLocalsMap.getLocalFunction (Closed)
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.dart ('k') | no next file » | 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 380853e75be6af85dcb108df56dc3effc7e535f7..221d27c9c82b5c249b982743bd074955158a78ee 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -6,7 +6,7 @@ library dart2js.kernel.element_map;
import 'package:kernel/ast.dart' as ir;
-import '../closure.dart' show BoxLocal;
+import '../closure.dart' show BoxLocal, ThisLocal;
import '../common.dart';
import '../common/names.dart' show Identifiers;
import '../common/resolution.dart';
@@ -32,6 +32,7 @@ import '../js_backend/no_such_method_registry.dart';
import '../js_backend/runtime_types.dart';
import '../js_model/closure.dart';
import '../js_model/elements.dart';
+import '../js_model/locals.dart';
import '../native/enqueue.dart';
import '../native/native.dart' as native;
import '../native/resolver.dart';
@@ -2199,8 +2200,18 @@ class JsKernelToElementMap extends KernelToElementMapBase
closureData.orderedTypeSet = setBuilder.createOrderedTypeSet(
closureData.supertype, const Link<InterfaceType>());
+ Local closureEntity;
+ if (node.parent is ir.FunctionDeclaration) {
+ ir.FunctionDeclaration parent = node.parent;
+ closureEntity = localsMap.getLocalVariable(parent.variable);
+ } else if (node.parent is ir.FunctionExpression) {
+ closureEntity = new JLocal('', localsMap.currentMember);
+ }
+ Local thisLocal =
+ info.hasThisLocal ? new ThisLocal(localsMap.currentMember) : null;
+
KernelClosureClass cls = new KernelClosureClass.fromScopeInfo(
- classEntity, node, info, localsMap);
+ classEntity, node, info, localsMap, closureEntity, thisLocal);
int i = 0;
for (ir.VariableDeclaration variable in info.freeVariables) {
// Make a corresponding field entity in this closure class for every
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698