@@ -318,11 +318,12 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
318
318
319
319
/// All [ModelElement] s constructed for this package; a superset of
320
320
/// the elements gathered in [_gatherModelElements] .
321
- final Map <( Element element, Library library, Container ? enclosingElement),
322
- ModelElement > allConstructedModelElements = {};
321
+ final Map <ConstructedModelElementsKey , ModelElement >
322
+ allConstructedModelElements = {};
323
323
324
324
/// Anything that might be inheritable, place here for later lookup.
325
- final Map <(Element , Library ), Set <ModelElement >> allInheritableElements = {};
325
+ final Map <InheritableElementsKey , Set <ModelElement >> allInheritableElements =
326
+ {};
326
327
327
328
/// A mapping of the list of classes which implement each class.
328
329
final Map <InheritingContainer , List <InheritingContainer >> _implementors =
@@ -800,18 +801,20 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
800
801
{InheritingContainer ? preferredClass}) {
801
802
var candidates = < ModelElement > {};
802
803
if (lib != null ) {
803
- var constructedWithKey = allConstructedModelElements[(e, lib, null )];
804
+ var constructedWithKey = allConstructedModelElements[
805
+ ConstructedModelElementsKey (e, lib, null )];
804
806
if (constructedWithKey != null ) {
805
807
candidates.add (constructedWithKey);
806
808
}
807
- var constructedWithKeyWithClass =
808
- allConstructedModelElements[ (e, lib, preferredClass)];
809
+ var constructedWithKeyWithClass = allConstructedModelElements[
810
+ ConstructedModelElementsKey (e, lib, preferredClass)];
809
811
if (constructedWithKeyWithClass != null ) {
810
812
candidates.add (constructedWithKeyWithClass);
811
813
}
812
814
if (candidates.isEmpty) {
813
815
candidates = {
814
- ...? allInheritableElements[(e, lib)]? .where ((me) => me.isCanonical),
816
+ ...? allInheritableElements[InheritableElementsKey (e, lib)]
817
+ ? .where ((me) => me.isCanonical),
815
818
};
816
819
}
817
820
}
@@ -1004,3 +1007,30 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
1004
1007
@override
1005
1008
Iterable <CommentReferable > get referenceParents => const [];
1006
1009
}
1010
+
1011
+ class ConstructedModelElementsKey {
1012
+ final Element element;
1013
+ final Library library;
1014
+ final Container ? enclosingElement;
1015
+
1016
+ ConstructedModelElementsKey (
1017
+ this .element, this .library, this .enclosingElement);
1018
+
1019
+ @override
1020
+ late final int hashCode = Object .hash (element, library, enclosingElement);
1021
+
1022
+ @override
1023
+ bool operator == (Object other) {
1024
+ if (other is ! ConstructedModelElementsKey ) return false ;
1025
+ return other.element == element &&
1026
+ other.library == library &&
1027
+ other.enclosingElement == enclosingElement;
1028
+ }
1029
+ }
1030
+
1031
+ class InheritableElementsKey {
1032
+ final Element element;
1033
+ final Library library;
1034
+
1035
+ InheritableElementsKey (this .element, this .library);
1036
+ }
0 commit comments