| 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.element_map; | 5 library dart2js.kernel.element_map; |
| 6 | 6 |
| 7 import 'package:kernel/ast.dart' as ir; | 7 import 'package:kernel/ast.dart' as ir; |
| 8 | 8 |
| 9 import '../common.dart'; | 9 import '../common.dart'; |
| 10 import '../common/names.dart' show Identifiers; | 10 import '../common/names.dart' show Identifiers; |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 return data.rawType; | 406 return data.rawType; |
| 407 } | 407 } |
| 408 | 408 |
| 409 FunctionType _getFunctionType(IndexedFunction function) { | 409 FunctionType _getFunctionType(IndexedFunction function) { |
| 410 FunctionData data = _memberData[function.memberIndex]; | 410 FunctionData data = _memberData[function.memberIndex]; |
| 411 return data.getFunctionType(this); | 411 return data.getFunctionType(this); |
| 412 } | 412 } |
| 413 | 413 |
| 414 ClassEntity _getAppliedMixin(IndexedClass cls) { | 414 ClassEntity _getAppliedMixin(IndexedClass cls) { |
| 415 ClassData data = _classData[cls.classIndex]; | 415 ClassData data = _classData[cls.classIndex]; |
| 416 _ensureThisAndRawType(cls, data); | 416 _ensureSupertypes(cls, data); |
| 417 return data.mixedInType?.element; | 417 return data.mixedInType?.element; |
| 418 } | 418 } |
| 419 | 419 |
| 420 bool _isMixinApplication(IndexedClass cls) { | 420 bool _isMixinApplication(IndexedClass cls) { |
| 421 ClassData data = _classData[cls.classIndex]; | 421 ClassData data = _classData[cls.classIndex]; |
| 422 _ensureThisAndRawType(cls, data); | 422 _ensureSupertypes(cls, data); |
| 423 return data.isMixinApplication; | 423 return data.isMixinApplication; |
| 424 } | 424 } |
| 425 | 425 |
| 426 bool _isUnnamedMixinApplication(IndexedClass cls) { | 426 bool _isUnnamedMixinApplication(IndexedClass cls) { |
| 427 ClassEnv env = _classEnvs[cls.classIndex]; | 427 ClassEnv env = _classEnvs[cls.classIndex]; |
| 428 return env.isUnnamedMixinApplication; | 428 return env.isUnnamedMixinApplication; |
| 429 } | 429 } |
| 430 | 430 |
| 431 void _forEachSupertype(IndexedClass cls, void f(InterfaceType supertype)) { | 431 void _forEachSupertype(IndexedClass cls, void f(InterfaceType supertype)) { |
| 432 ClassData data = _classData[cls.classIndex]; | 432 ClassData data = _classData[cls.classIndex]; |
| 433 _ensureThisAndRawType(cls, data); | 433 _ensureSupertypes(cls, data); |
| 434 data.orderedTypeSet.supertypes.forEach(f); | 434 data.orderedTypeSet.supertypes.forEach(f); |
| 435 } | 435 } |
| 436 | 436 |
| 437 void _forEachMixin(IndexedClass cls, void f(ClassEntity mixin)) { | 437 void _forEachMixin(IndexedClass cls, void f(ClassEntity mixin)) { |
| 438 while (cls != null) { | 438 while (cls != null) { |
| 439 ClassData data = _classData[cls.classIndex]; | 439 ClassData data = _classData[cls.classIndex]; |
| 440 _ensureThisAndRawType(cls, data); | 440 _ensureSupertypes(cls, data); |
| 441 if (data.mixedInType != null) { | 441 if (data.mixedInType != null) { |
| 442 f(data.mixedInType.element); | 442 f(data.mixedInType.element); |
| 443 } | 443 } |
| 444 cls = data.supertype?.element; | 444 cls = data.supertype?.element; |
| 445 } | 445 } |
| 446 } | 446 } |
| 447 | 447 |
| 448 void _forEachConstructor(IndexedClass cls, void f(ConstructorEntity member)) { | 448 void _forEachConstructor(IndexedClass cls, void f(ConstructorEntity member)) { |
| 449 ClassEnv env = _classEnvs[cls.classIndex]; | 449 ClassEnv env = _classEnvs[cls.classIndex]; |
| 450 env.forEachConstructor((ir.Member member) { | 450 env.forEachConstructor((ir.Member member) { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 480 InterfaceType supertype = | 480 InterfaceType supertype = |
| 481 orderedTypeSet.asInstanceOf(cls, _getHierarchyDepth(cls)); | 481 orderedTypeSet.asInstanceOf(cls, _getHierarchyDepth(cls)); |
| 482 if (supertype != null) { | 482 if (supertype != null) { |
| 483 supertype = _substByContext(supertype, type); | 483 supertype = _substByContext(supertype, type); |
| 484 } | 484 } |
| 485 return supertype; | 485 return supertype; |
| 486 } | 486 } |
| 487 | 487 |
| 488 OrderedTypeSet _getOrderedTypeSet(IndexedClass cls) { | 488 OrderedTypeSet _getOrderedTypeSet(IndexedClass cls) { |
| 489 ClassData data = _classData[cls.classIndex]; | 489 ClassData data = _classData[cls.classIndex]; |
| 490 _ensureThisAndRawType(cls, data); | 490 _ensureSupertypes(cls, data); |
| 491 return data.orderedTypeSet; | 491 return data.orderedTypeSet; |
| 492 } | 492 } |
| 493 | 493 |
| 494 int _getHierarchyDepth(IndexedClass cls) { | 494 int _getHierarchyDepth(IndexedClass cls) { |
| 495 ClassData data = _classData[cls.classIndex]; | 495 ClassData data = _classData[cls.classIndex]; |
| 496 _ensureThisAndRawType(cls, data); | 496 _ensureSupertypes(cls, data); |
| 497 return data.orderedTypeSet.maxDepth; | 497 return data.orderedTypeSet.maxDepth; |
| 498 } | 498 } |
| 499 | 499 |
| 500 Iterable<InterfaceType> _getInterfaces(IndexedClass cls) { | 500 Iterable<InterfaceType> _getInterfaces(IndexedClass cls) { |
| 501 ClassData data = _classData[cls.classIndex]; | 501 ClassData data = _classData[cls.classIndex]; |
| 502 _ensureThisAndRawType(cls, data); | 502 _ensureSupertypes(cls, data); |
| 503 return data.interfaces; | 503 return data.interfaces; |
| 504 } | 504 } |
| 505 | 505 |
| 506 Spannable _getSpannable(MemberEntity member, ir.Node node) { | 506 Spannable _getSpannable(MemberEntity member, ir.Node node) { |
| 507 return member; | 507 return member; |
| 508 } | 508 } |
| 509 | 509 |
| 510 ir.Member _getMemberNode(covariant IndexedMember member) { | 510 ir.Member _getMemberNode(covariant IndexedMember member) { |
| 511 return _memberData[member.memberIndex].node; | 511 return _memberData[member.memberIndex].node; |
| 512 } | 512 } |
| (...skipping 1028 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1541 final KernelToElementMapForImpactImpl elementMap; | 1541 final KernelToElementMapForImpactImpl elementMap; |
| 1542 | 1542 |
| 1543 KernelClosedWorld(this.elementMap, | 1543 KernelClosedWorld(this.elementMap, |
| 1544 {ElementEnvironment elementEnvironment, | 1544 {ElementEnvironment elementEnvironment, |
| 1545 DartTypes dartTypes, | 1545 DartTypes dartTypes, |
| 1546 CommonElements commonElements, | 1546 CommonElements commonElements, |
| 1547 ConstantSystem constantSystem, | 1547 ConstantSystem constantSystem, |
| 1548 NativeData nativeData, | 1548 NativeData nativeData, |
| 1549 InterceptorData interceptorData, | 1549 InterceptorData interceptorData, |
| 1550 BackendUsage backendUsage, | 1550 BackendUsage backendUsage, |
| 1551 ResolutionWorldBuilder resolutionWorldBuilder, | |
| 1552 Set<ClassEntity> implementedClasses, | 1551 Set<ClassEntity> implementedClasses, |
| 1553 Iterable<MemberEntity> liveInstanceMembers, | 1552 Iterable<MemberEntity> liveInstanceMembers, |
| 1553 Iterable<MemberEntity> assignedInstanceMembers, |
| 1554 Set<TypedefElement> allTypedefs, | 1554 Set<TypedefElement> allTypedefs, |
| 1555 Map<ClassEntity, Set<ClassEntity>> mixinUses, | 1555 Map<ClassEntity, Set<ClassEntity>> mixinUses, |
| 1556 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, | 1556 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, |
| 1557 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes, | 1557 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes, |
| 1558 Map<ClassEntity, ClassSet> classSets}) | 1558 Map<ClassEntity, ClassSet> classSets}) |
| 1559 : super( | 1559 : super( |
| 1560 elementEnvironment, | 1560 elementEnvironment, |
| 1561 dartTypes, | 1561 dartTypes, |
| 1562 commonElements, | 1562 commonElements, |
| 1563 constantSystem, | 1563 constantSystem, |
| 1564 nativeData, | 1564 nativeData, |
| 1565 interceptorData, | 1565 interceptorData, |
| 1566 backendUsage, | 1566 backendUsage, |
| 1567 resolutionWorldBuilder, | |
| 1568 implementedClasses, | 1567 implementedClasses, |
| 1569 liveInstanceMembers, | 1568 liveInstanceMembers, |
| 1569 assignedInstanceMembers, |
| 1570 allTypedefs, | 1570 allTypedefs, |
| 1571 mixinUses, | 1571 mixinUses, |
| 1572 typesImplementedBySubclasses, | 1572 typesImplementedBySubclasses, |
| 1573 classHierarchyNodes, | 1573 classHierarchyNodes, |
| 1574 classSets); | 1574 classSets); |
| 1575 | 1575 |
| 1576 @override | 1576 @override |
| 1577 void registerClosureClass(ClassElement cls) { | 1577 void registerClosureClass(ClassElement cls) { |
| 1578 throw new UnimplementedError('KernelClosedWorld.registerClosureClass'); | 1578 throw new UnimplementedError('KernelClosedWorld.registerClosureClass'); |
| 1579 } | 1579 } |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1816 @override | 1816 @override |
| 1817 ir.Member getMemberNode(MemberEntity member) { | 1817 ir.Member getMemberNode(MemberEntity member) { |
| 1818 return _getMemberNode(member); | 1818 return _getMemberNode(member); |
| 1819 } | 1819 } |
| 1820 | 1820 |
| 1821 @override | 1821 @override |
| 1822 ir.Class getClassNode(ClassEntity cls) { | 1822 ir.Class getClassNode(ClassEntity cls) { |
| 1823 return _getClassNode(cls); | 1823 return _getClassNode(cls); |
| 1824 } | 1824 } |
| 1825 } | 1825 } |
| OLD | NEW |