| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |