@@ -1746,7 +1746,8 @@ class ConstructorElementImpl2 extends ExecutableElementImpl2
17461746}
17471747
17481748/// Common implementation for methods defined in [ConstructorElement] .
1749- mixin ConstructorElementMixin implements ConstructorElement {
1749+ mixin ConstructorElementMixin
1750+ implements ConstructorElement , ExecutableElementOrMember {
17501751 @override
17511752 bool get isDefaultConstructor {
17521753 // unnamed
@@ -3723,7 +3724,7 @@ class EnumElementImpl2 extends InterfaceElementImpl2
37233724/// A base class for concrete implementations of an [ExecutableElement] .
37243725abstract class ExecutableElementImpl extends _ExistingElementImpl
37253726 with TypeParameterizedElementMixin , MacroTargetElement
3726- implements ExecutableElement , ExecutableFragment {
3727+ implements ExecutableElementOrMember , ExecutableFragment {
37273728 /// A list containing all of the parameters defined by this executable
37283729 /// element.
37293730 List <ParameterElementImpl > _parameters = const [];
@@ -3950,6 +3951,16 @@ abstract class ExecutableElementImpl2 extends FunctionTypedElementImpl2
39503951 }
39513952}
39523953
3954+ /// Common base class for all analyzer-internal classes that implement
3955+ /// `ExecutableElement` .
3956+ abstract class ExecutableElementOrMember implements ExecutableElement {
3957+ @override
3958+ TypeImpl get returnType;
3959+
3960+ @override
3961+ FunctionTypeImpl get type;
3962+ }
3963+
39533964/// A concrete implementation of an [ExtensionElement] .
39543965class ExtensionElementImpl extends InstanceElementImpl
39553966 with AugmentableElement <ExtensionElementImpl >
@@ -4046,7 +4057,7 @@ class ExtensionElementImpl extends InstanceElementImpl
40464057 }
40474058
40484059 @override
4049- PropertyAccessorElement ? getGetter (String getterName) {
4060+ PropertyAccessorElementOrMember ? getGetter (String getterName) {
40504061 for (var accessor in augmented .accessors) {
40514062 if (accessor.isGetter && accessor.name == getterName) {
40524063 return accessor;
@@ -4056,7 +4067,7 @@ class ExtensionElementImpl extends InstanceElementImpl
40564067 }
40574068
40584069 @override
4059- MethodElement ? getMethod (String methodName) {
4070+ MethodElementOrMember ? getMethod (String methodName) {
40604071 for (var method in augmented .methods) {
40614072 if (method.name == methodName) {
40624073 return method;
@@ -4426,7 +4437,7 @@ class FieldElementImpl2 extends PropertyInducingElementImpl2
44264437 SetterElement ? get setter2 => firstFragment.setter? .element as SetterElement ? ;
44274438
44284439 @override
4429- DartType get type => firstFragment.type;
4440+ TypeImpl get type => firstFragment.type;
44304441
44314442 @override
44324443 T ? accept2 <T >(ElementVisitor2 <T > visitor) {
@@ -4662,7 +4673,10 @@ class FormalParameterElementImpl extends PromotableElementImpl2
46624673/// A mixin that provides a common implementation for methods defined in
46634674/// [FormalParameterElement] .
46644675mixin FormalParameterElementMixin
4665- implements FormalParameterElement , SharedNamedFunctionParameter {
4676+ implements
4677+ FormalParameterElement ,
4678+ SharedNamedFunctionParameter ,
4679+ VariableElement2OrMember {
46664680 @override
46674681 TypeImpl get type;
46684682
@@ -5157,7 +5171,8 @@ class FunctionElementImpl extends ExecutableElementImpl
51575171 FunctionElement ,
51585172 FunctionTypedElementImpl ,
51595173 LocalFunctionFragment ,
5160- TopLevelFunctionFragment {
5174+ TopLevelFunctionFragment ,
5175+ ExecutableElementOrMember {
51615176 @override
51625177 String ? name2;
51635178
@@ -5698,10 +5713,10 @@ abstract class InstanceElementImpl2 extends ElementImpl2
56985713 List <FieldElement > fields = [];
56995714
57005715 @override
5701- List <PropertyAccessorElement > accessors = [];
5716+ List <PropertyAccessorElementOrMember > accessors = [];
57025717
57035718 @override
5704- List <MethodElement > methods = [];
5719+ List <MethodElementOrMember > methods = [];
57055720
57065721 final List <MethodElementImpl2 > internal_methods2 = [];
57075722
@@ -7734,7 +7749,10 @@ class LocalFunctionElementImpl extends ExecutableElementImpl2
77347749
77357750/// A concrete implementation of a [LocalVariableElement] .
77367751class LocalVariableElementImpl extends NonParameterVariableElementImpl
7737- implements LocalVariableElement , LocalVariableFragment {
7752+ implements
7753+ LocalVariableElement ,
7754+ LocalVariableFragment ,
7755+ VariableElementOrMember {
77387756 late LocalVariableElementImpl2 _element2 = switch (this ) {
77397757 BindPatternVariableElementImpl () => BindPatternVariableElementImpl2 (this ),
77407758 JoinPatternVariableElementImpl () => JoinPatternVariableElementImpl2 (this ),
@@ -8268,6 +8286,8 @@ final class MetadataImpl implements Metadata {
82688286 }
82698287}
82708288
8289+ /// Common base class for all analyzer-internal classes that implement
8290+ /// `MethodElement2` .
82718291abstract class MethodElement2OrMember implements MethodElement2 {
82728292 @override
82738293 FunctionTypeImpl get type;
@@ -8433,7 +8453,13 @@ class MethodElementImpl2 extends ExecutableElementImpl2
84338453 }
84348454}
84358455
8436- abstract class MethodElementOrMember implements MethodElement {
8456+ /// Common base class for all analyzer-internal classes that implement
8457+ /// `MethodElement` .
8458+ abstract class MethodElementOrMember
8459+ implements MethodElement , ExecutableElementOrMember {
8460+ @override
8461+ TypeImpl get returnType;
8462+
84378463 @override
84388464 FunctionTypeImpl get type;
84398465}
@@ -9522,7 +9548,8 @@ class ParameterElementImpl_ofImplicitSetter extends ParameterElementImpl {
95229548
95239549/// A mixin that provides a common implementation for methods defined in
95249550/// [ParameterElement] .
9525- mixin ParameterElementMixin implements ParameterElement {
9551+ mixin ParameterElementMixin
9552+ implements ParameterElement , VariableElementOrMember {
95269553 @override
95279554 bool get isNamed => parameterKind.isNamed;
95289555
@@ -9893,7 +9920,7 @@ abstract class PromotableElementImpl2 extends VariableElementImpl2
98939920class PropertyAccessorElementImpl extends ExecutableElementImpl
98949921 with AugmentableElement <PropertyAccessorElementImpl >
98959922 implements
9896- PropertyAccessorElement ,
9923+ PropertyAccessorElementOrMember ,
98979924 PropertyAccessorFragment ,
98989925 GetterFragment ,
98999926 SetterFragment {
@@ -10244,11 +10271,22 @@ class PropertyAccessorElementImpl_ImplicitSetter
1024410271 PropertyInducingElementImpl get variable2 => super .variable2! ;
1024510272}
1024610273
10274+ /// Common base class for all analyzer-internal classes that implement
10275+ /// `PropertyAccessorElement` .
10276+ abstract class PropertyAccessorElementOrMember
10277+ implements PropertyAccessorElement , ExecutableElementOrMember {
10278+ @override
10279+ TypeImpl get returnType;
10280+
10281+ @override
10282+ PropertyInducingElementOrMember ? get variable2;
10283+ }
10284+
1024710285/// A concrete implementation of a [PropertyInducingElement] .
1024810286abstract class PropertyInducingElementImpl
1024910287 extends NonParameterVariableElementImpl
1025010288 with MacroTargetElement
10251- implements PropertyInducingElement , PropertyInducingFragment {
10289+ implements PropertyInducingElementOrMember , PropertyInducingFragment {
1025210290 @override
1025310291 String ? name2;
1025410292
@@ -10449,6 +10487,14 @@ abstract class PropertyInducingElementImpl2 extends VariableElementImpl2
1044910487 List <PropertyInducingElementImpl > get _fragments;
1045010488}
1045110489
10490+ /// Common base class for all analyzer-internal classes that implement
10491+ /// `PropertyInducingElement` .
10492+ abstract class PropertyInducingElementOrMember
10493+ implements PropertyInducingElement , VariableElementOrMember {
10494+ @override
10495+ TypeImpl get type;
10496+ }
10497+
1045210498/// Instances of this class are set for fields and top-level variables
1045310499/// to perform top-level type inference during linking.
1045410500abstract class PropertyInducingElementTypeInference {
@@ -10844,7 +10890,7 @@ class TopLevelVariableElementImpl2 extends PropertyInducingElementImpl2
1084410890 firstFragment.setter2? .element as SetterElement ? ;
1084510891
1084610892 @override
10847- DartType get type => firstFragment.type;
10893+ TypeImpl get type => firstFragment.type;
1084810894
1084910895 @override
1085010896 T ? accept2 <T >(ElementVisitor2 <T > visitor) {
@@ -11553,9 +11599,16 @@ abstract class UriReferencedElementImpl extends _ExistingElementImpl
1155311599 }
1155411600}
1155511601
11602+ /// Common base class for all analyzer-internal classes that implement
11603+ /// `VariableElement2` .
11604+ abstract class VariableElement2OrMember implements VariableElement2 {
11605+ @override
11606+ TypeImpl get type;
11607+ }
11608+
1155611609/// A concrete implementation of a [VariableElement] .
1155711610abstract class VariableElementImpl extends ElementImpl
11558- implements VariableElement {
11611+ implements VariableElementOrMember {
1155911612 /// The type of this variable.
1156011613 TypeImpl ? _type;
1156111614
@@ -11665,7 +11718,7 @@ abstract class VariableElementImpl extends ElementImpl
1166511718}
1166611719
1166711720abstract class VariableElementImpl2 extends ElementImpl2
11668- implements VariableElement2 {
11721+ implements VariableElement2OrMember {
1166911722 @override
1167011723 void visitChildren2 <T >(ElementVisitor2 <T > visitor) {
1167111724 for (var child in children2) {
@@ -11674,6 +11727,13 @@ abstract class VariableElementImpl2 extends ElementImpl2
1167411727 }
1167511728}
1167611729
11730+ /// Common base class for all analyzer-internal classes that implement
11731+ /// `VariableElement` .
11732+ abstract class VariableElementOrMember implements VariableElement {
11733+ @override
11734+ TypeImpl get type;
11735+ }
11736+
1167711737mixin WrappedElementMixin implements ElementImpl2 {
1167811738 @override
1167911739 bool get isSynthetic => _wrappedElement.isSynthetic;
0 commit comments