@@ -5340,9 +5340,6 @@ abstract class InstanceElementImpl2 extends ElementImpl2
53405340 @override
53415341 List <PropertyAccessorElement > accessors = [];
53425342
5343- @override
5344- List <MethodElement > methods = [];
5345-
53465343 @override
53475344 List <MethodElementImpl2 > methods2 = [];
53485345
@@ -5409,6 +5406,42 @@ abstract class InstanceElementImpl2 extends ElementImpl2
54095406 @override
54105407 Metadata get metadata2 => firstFragment.metadata2;
54115408
5409+ @override
5410+ List <MethodElement > get methods {
5411+ return methods2.map ((element) {
5412+ var firstTypeParameters = firstFragment.typeParameters;
5413+
5414+ var lastFragment = element.lastFragment;
5415+ var lastInstance = lastFragment.enclosingFragment;
5416+ if (identical (lastInstance, firstFragment)) {
5417+ return lastFragment;
5418+ }
5419+
5420+ var lastTypeParameters = lastInstance.typeParameters2;
5421+ if (firstTypeParameters.isEmpty && lastTypeParameters.isEmpty) {
5422+ return lastFragment;
5423+ }
5424+
5425+ MapSubstitution toFirstFragment;
5426+ if (lastTypeParameters.length == firstTypeParameters.length) {
5427+ toFirstFragment = Substitution .fromPairs (
5428+ lastTypeParameters,
5429+ firstTypeParameters.instantiateNone (),
5430+ );
5431+ } else {
5432+ toFirstFragment = Substitution .fromPairs (
5433+ lastTypeParameters,
5434+ List .filled (
5435+ lastTypeParameters.length,
5436+ InvalidTypeImpl .instance,
5437+ ),
5438+ );
5439+ }
5440+
5441+ return MethodMember (lastFragment, toFirstFragment, Substitution .empty);
5442+ }).toList ();
5443+ }
5444+
54125445 @override
54135446 String ? get name3 => firstFragment.name;
54145447
@@ -7640,8 +7673,8 @@ class MethodElementImpl extends ExecutableElementImpl
76407673 }
76417674
76427675 @override
7643- InstanceFragment ? get enclosingFragment =>
7644- enclosingElement3 as InstanceFragment ;
7676+ InstanceElementImpl get enclosingFragment =>
7677+ enclosingElement3 as InstanceElementImpl ;
76457678
76467679 /// Set whether this class is abstract.
76477680 set isAbstract (bool isAbstract) {
@@ -7674,7 +7707,7 @@ class MethodElementImpl extends ExecutableElementImpl
76747707 }
76757708
76767709 @override
7677- MethodFragment ? get nextFragment => augmentation;
7710+ MethodElementImpl ? get nextFragment => augmentation;
76787711
76797712 @override
76807713 Element get nonSynthetic {
@@ -7685,7 +7718,7 @@ class MethodElementImpl extends ExecutableElementImpl
76857718 }
76867719
76877720 @override
7688- MethodFragment ? get previousFragment => augmentationTarget;
7721+ MethodElementImpl ? get previousFragment => augmentationTarget;
76897722
76907723 @override
76917724 T ? accept <T >(ElementVisitor <T > visitor) => visitor.visitMethodElement (this );
@@ -7726,6 +7759,17 @@ class MethodElementImpl2 extends ExecutableElementImpl2
77267759 @override
77277760 ElementKind get kind => ElementKind .METHOD ;
77287761
7762+ MethodElementImpl get lastFragment {
7763+ var lastFragment = firstFragment;
7764+ while (true ) {
7765+ if (lastFragment.nextFragment case var nextFragment? ) {
7766+ lastFragment = nextFragment;
7767+ } else {
7768+ return lastFragment;
7769+ }
7770+ }
7771+ }
7772+
77297773 @override
77307774 T ? accept2 <T >(ElementVisitor2 <T > visitor) {
77317775 return visitor.visitMethodElement (this );
@@ -10583,8 +10627,8 @@ mixin TypeParameterizedElementMixin on ElementImpl
1058310627 }
1058410628
1058510629 @override
10586- List <TypeParameterFragment > get typeParameters2 =>
10587- typeParameters.cast <TypeParameterFragment >();
10630+ List <TypeParameterElementImpl > get typeParameters2 =>
10631+ typeParameters.cast <TypeParameterElementImpl >();
1058810632
1058910633 List <TypeParameterElement > get typeParameters_unresolved {
1059010634 return _typeParameters;
0 commit comments