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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.kernel.env; 5 library dart2js.kernel.env;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 import 'package:kernel/clone.dart'; 8 import 'package:kernel/clone.dart';
9 import 'package:kernel/type_algebra.dart'; 9 import 'package:kernel/type_algebra.dart';
10 10
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 void addConstructorBody(ConstructorBodyEntity constructorBody) { 368 void addConstructorBody(ConstructorBodyEntity constructorBody) {
369 _constructorBodyList ??= <ConstructorBodyEntity>[]; 369 _constructorBodyList ??= <ConstructorBodyEntity>[];
370 _constructorBodyList.add(constructorBody); 370 _constructorBodyList.add(constructorBody);
371 } 371 }
372 372
373 void forEachConstructorBody(void f(ConstructorBodyEntity constructor)) { 373 void forEachConstructorBody(void f(ConstructorBodyEntity constructor)) {
374 _constructorBodyList?.forEach(f); 374 _constructorBodyList?.forEach(f);
375 } 375 }
376 } 376 }
377 377
378 class ClosureClassEnv implements ClassEnv { 378 class ClosureClassEnv extends RecordContainerEnv {
379 ClosureClassEnv(Map<String, MemberEntity> memberMap) : super(memberMap);
380
381 @override
382 MemberEntity lookupMember(KernelToElementMap elementMap, String name,
383 {bool setter: false}) {
384 if (setter) {
385 // All closure fields are final.
386 return null;
387 }
388 return super.lookupMember(elementMap, name, setter: setter);
389 }
390 }
391
392 class RecordContainerEnv implements ClassEnv {
379 final Map<String, MemberEntity> _memberMap; 393 final Map<String, MemberEntity> _memberMap;
380 394
381 ClosureClassEnv(this._memberMap); 395 RecordContainerEnv(this._memberMap);
382 396
383 @override 397 @override
384 void forEachConstructorBody(void f(ConstructorBodyEntity constructor)) { 398 void forEachConstructorBody(void f(ConstructorBodyEntity constructor)) {
385 // We do not create constructor bodies for closure classes. 399 // We do not create constructor bodies for containers.
386 } 400 }
387 401
388 @override 402 @override
389 void forEachConstructor( 403 void forEachConstructor(
390 KernelToElementMap elementMap, void f(ConstructorEntity constructor)) { 404 KernelToElementMap elementMap, void f(ConstructorEntity constructor)) {
391 // We do not create constructors for closure classes. 405 // We do not create constructors for containers.
392 } 406 }
393 407
394 @override 408 @override
395 ConstructorEntity lookupConstructor( 409 ConstructorEntity lookupConstructor(
396 KernelToElementMap elementMap, String name) { 410 KernelToElementMap elementMap, String name) {
397 // We do not create constructors for closure classes. 411 // We do not create constructors for containers.
398 return null; 412 return null;
399 } 413 }
400 414
401 @override 415 @override
402 void forEachMember( 416 void forEachMember(
403 KernelToElementMap elementMap, void f(MemberEntity member)) { 417 KernelToElementMap elementMap, void f(MemberEntity member)) {
404 _memberMap.values.forEach(f); 418 _memberMap.values.forEach(f);
405 } 419 }
406 420
407 @override 421 @override
408 MemberEntity lookupMember(KernelToElementMap elementMap, String name, 422 MemberEntity lookupMember(KernelToElementMap elementMap, String name,
409 {bool setter: false}) { 423 {bool setter: false}) {
410 if (setter) {
411 // All closure fields are final.
412 return null;
413 }
414 return _memberMap[name]; 424 return _memberMap[name];
415 } 425 }
416 426
417 @override 427 @override
418 bool get isUnnamedMixinApplication => false; 428 bool get isUnnamedMixinApplication => false;
419 429
420 @override 430 @override
421 ir.Class get cls => null; 431 ir.Class get cls => null;
422 } 432 }
423 433
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 } 606 }
597 } 607 }
598 608
599 class TypedefData { 609 class TypedefData {
600 final ir.Typedef node; 610 final ir.Typedef node;
601 final TypedefEntity element; 611 final TypedefEntity element;
602 final TypedefType rawType; 612 final TypedefType rawType;
603 613
604 TypedefData(this.node, this.element, this.rawType); 614 TypedefData(this.node, this.element, this.rawType);
605 } 615 }
OLDNEW
« 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