Skip to content

Commit 0730b31

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Use more elements in InheritanceManager3.
Change-Id: I4c2e16437507556b5d23688454e3e9e56a42f279 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/442286 Reviewed-by: Samuel Rawlins <[email protected]> Reviewed-by: Paul Berry <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 590d6f2 commit 0730b31

File tree

1 file changed

+16
-28
lines changed

1 file changed

+16
-28
lines changed

pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class InheritanceManager3 {
7373

7474
/// The set of classes that are currently being processed, used to detect
7575
/// self-referencing cycles.
76-
final Set<InterfaceFragmentImpl> _processingClasses = {};
76+
final Set<InterfaceElementImpl> _processingClasses = {};
7777

7878
/// Combine types of [candidates] into a single most specific type.
7979
///
@@ -211,7 +211,7 @@ class InheritanceManager3 {
211211

212212
var interface = _getInterface(element);
213213
if (forSuper) {
214-
if (element is ExtensionTypeFragmentImpl) {
214+
if (element is ExtensionTypeElementImpl) {
215215
return null;
216216
}
217217
var superImplemented = interface.superImplemented;
@@ -460,34 +460,32 @@ class InheritanceManager3 {
460460
}
461461
_interfaces[element] = Interface._empty;
462462

463-
if (!_processingClasses.add(element.firstFragment)) {
463+
if (!_processingClasses.add(element)) {
464464
return Interface._empty;
465465
}
466466

467467
try {
468468
if (element is ExtensionTypeElementImpl) {
469-
result = _getInterfaceExtensionType(element.firstFragment);
469+
result = _getInterfaceExtensionType(element);
470470
} else if (element is MixinElementImpl) {
471-
result = _getInterfaceMixin(element.firstFragment);
471+
result = _getInterfaceMixin(element);
472472
} else {
473-
result = _getInterfaceClass(element.firstFragment);
473+
result = _getInterfaceClass(element);
474474
}
475475
} finally {
476-
_processingClasses.remove(element.firstFragment);
476+
_processingClasses.remove(element);
477477
}
478478

479479
_interfaces[element] = result;
480480
return result;
481481
}
482482

483-
Interface _getInterfaceClass(InterfaceFragmentImpl fragment) {
484-
var element = fragment.element;
485-
483+
Interface _getInterfaceClass(InterfaceElementImpl element) {
486484
var namedCandidates = <Name, List<ExecutableElement2OrMember>>{};
487485
var superImplemented = <Map<Name, ExecutableElement2OrMember>>[];
488486
var implemented = <Name, ExecutableElement2OrMember>{};
489487

490-
InterfaceType? superType = fragment.supertype;
488+
InterfaceType? superType = element.supertype;
491489

492490
Interface? superTypeInterface;
493491
if (superType != null) {
@@ -659,7 +657,7 @@ class InheritanceManager3 {
659657
redeclared: const {},
660658
superImplemented: superImplemented,
661659
conflicts: conflicts.toFixedList(),
662-
combinedSignatures: _combinedSignatures.remove(fragment.element) ?? {},
660+
combinedSignatures: _combinedSignatures.remove(element) ?? {},
663661
);
664662
}
665663

@@ -669,9 +667,7 @@ class InheritanceManager3 {
669667
///
670668
/// We handle "has an extension type member" and "has a non-extension type
671669
/// member" portions, considering redeclaration and conflicts.
672-
Interface _getInterfaceExtensionType(ExtensionTypeFragmentImpl fragment) {
673-
var element = fragment.element;
674-
670+
Interface _getInterfaceExtensionType(ExtensionTypeElementImpl element) {
675671
// Add instance members implemented by the element itself.
676672
var declared = <Name, ExecutableElement2OrMember>{};
677673
_addImplemented(declared, element);
@@ -822,11 +818,7 @@ class InheritanceManager3 {
822818
if (elements.length == 1) {
823819
uniqueRedeclared[name] = elements.toFixedList();
824820
} else {
825-
var uniqueElements = <ExecutableElement2OrMember>{};
826-
for (var fragment in elements) {
827-
uniqueElements.add(fragment);
828-
}
829-
uniqueRedeclared[name] = uniqueElements.toFixedList();
821+
uniqueRedeclared[name] = elements.toSet().toFixedList();
830822
}
831823
}
832824

@@ -839,13 +831,11 @@ class InheritanceManager3 {
839831
redeclared: uniqueRedeclared,
840832
superImplemented: const [],
841833
conflicts: conflicts.toFixedList(),
842-
combinedSignatures: _combinedSignatures.remove(fragment.element) ?? {},
834+
combinedSignatures: _combinedSignatures.remove(element) ?? {},
843835
);
844836
}
845837

846-
Interface _getInterfaceMixin(MixinFragmentImpl fragment) {
847-
var element = fragment.element;
848-
838+
Interface _getInterfaceMixin(MixinElementImpl element) {
849839
var superCandidates = <Name, List<ExecutableElement2OrMember>>{};
850840
for (var constraint in element.superclassConstraints) {
851841
var substitution = Substitution.fromInterfaceType(constraint);
@@ -897,7 +887,7 @@ class InheritanceManager3 {
897887
superImplemented: [superInterface],
898888
conflicts:
899889
<Conflict>[...superConflicts, ...interfaceConflicts].toFixedList(),
900-
combinedSignatures: _combinedSignatures.remove(fragment.element) ?? {},
890+
combinedSignatures: _combinedSignatures.remove(element) ?? {},
901891
);
902892
}
903893

@@ -982,9 +972,7 @@ class InheritanceManager3 {
982972
resultFragment.formalParameters =
983973
transformedParameters.map((e) => e.firstFragment).toList();
984974
resultFragment.typeParameters =
985-
executable.typeParameters
986-
.map((e) => e.firstFragment)
987-
.toList();
975+
executable.typeParameters.map((e) => e.firstFragment).toList();
988976

989977
var elementName = executable.name!;
990978
var result = MethodElementImpl(

0 commit comments

Comments
 (0)