@@ -1746,7 +1746,8 @@ class ConstructorElementImpl2 extends ExecutableElementImpl2
1746
1746
}
1747
1747
1748
1748
/// Common implementation for methods defined in [ConstructorElement] .
1749
- mixin ConstructorElementMixin implements ConstructorElement {
1749
+ mixin ConstructorElementMixin
1750
+ implements ConstructorElement , ExecutableElementOrMember {
1750
1751
@override
1751
1752
bool get isDefaultConstructor {
1752
1753
// unnamed
@@ -3723,7 +3724,7 @@ class EnumElementImpl2 extends InterfaceElementImpl2
3723
3724
/// A base class for concrete implementations of an [ExecutableElement] .
3724
3725
abstract class ExecutableElementImpl extends _ExistingElementImpl
3725
3726
with TypeParameterizedElementMixin , MacroTargetElement
3726
- implements ExecutableElement , ExecutableFragment {
3727
+ implements ExecutableElementOrMember , ExecutableFragment {
3727
3728
/// A list containing all of the parameters defined by this executable
3728
3729
/// element.
3729
3730
List <ParameterElementImpl > _parameters = const [];
@@ -3950,6 +3951,16 @@ abstract class ExecutableElementImpl2 extends FunctionTypedElementImpl2
3950
3951
}
3951
3952
}
3952
3953
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
+
3953
3964
/// A concrete implementation of an [ExtensionElement] .
3954
3965
class ExtensionElementImpl extends InstanceElementImpl
3955
3966
with AugmentableElement <ExtensionElementImpl >
@@ -4046,7 +4057,7 @@ class ExtensionElementImpl extends InstanceElementImpl
4046
4057
}
4047
4058
4048
4059
@override
4049
- PropertyAccessorElement ? getGetter (String getterName) {
4060
+ PropertyAccessorElementOrMember ? getGetter (String getterName) {
4050
4061
for (var accessor in augmented .accessors) {
4051
4062
if (accessor.isGetter && accessor.name == getterName) {
4052
4063
return accessor;
@@ -4056,7 +4067,7 @@ class ExtensionElementImpl extends InstanceElementImpl
4056
4067
}
4057
4068
4058
4069
@override
4059
- MethodElement ? getMethod (String methodName) {
4070
+ MethodElementOrMember ? getMethod (String methodName) {
4060
4071
for (var method in augmented .methods) {
4061
4072
if (method.name == methodName) {
4062
4073
return method;
@@ -4426,7 +4437,7 @@ class FieldElementImpl2 extends PropertyInducingElementImpl2
4426
4437
SetterElement ? get setter2 => firstFragment.setter? .element as SetterElement ? ;
4427
4438
4428
4439
@override
4429
- DartType get type => firstFragment.type;
4440
+ TypeImpl get type => firstFragment.type;
4430
4441
4431
4442
@override
4432
4443
T ? accept2 <T >(ElementVisitor2 <T > visitor) {
@@ -4662,7 +4673,10 @@ class FormalParameterElementImpl extends PromotableElementImpl2
4662
4673
/// A mixin that provides a common implementation for methods defined in
4663
4674
/// [FormalParameterElement] .
4664
4675
mixin FormalParameterElementMixin
4665
- implements FormalParameterElement , SharedNamedFunctionParameter {
4676
+ implements
4677
+ FormalParameterElement ,
4678
+ SharedNamedFunctionParameter ,
4679
+ VariableElement2OrMember {
4666
4680
@override
4667
4681
TypeImpl get type;
4668
4682
@@ -5157,7 +5171,8 @@ class FunctionElementImpl extends ExecutableElementImpl
5157
5171
FunctionElement ,
5158
5172
FunctionTypedElementImpl ,
5159
5173
LocalFunctionFragment ,
5160
- TopLevelFunctionFragment {
5174
+ TopLevelFunctionFragment ,
5175
+ ExecutableElementOrMember {
5161
5176
@override
5162
5177
String ? name2;
5163
5178
@@ -5698,10 +5713,10 @@ abstract class InstanceElementImpl2 extends ElementImpl2
5698
5713
List <FieldElement > fields = [];
5699
5714
5700
5715
@override
5701
- List <PropertyAccessorElement > accessors = [];
5716
+ List <PropertyAccessorElementOrMember > accessors = [];
5702
5717
5703
5718
@override
5704
- List <MethodElement > methods = [];
5719
+ List <MethodElementOrMember > methods = [];
5705
5720
5706
5721
final List <MethodElementImpl2 > internal_methods2 = [];
5707
5722
@@ -7734,7 +7749,10 @@ class LocalFunctionElementImpl extends ExecutableElementImpl2
7734
7749
7735
7750
/// A concrete implementation of a [LocalVariableElement] .
7736
7751
class LocalVariableElementImpl extends NonParameterVariableElementImpl
7737
- implements LocalVariableElement , LocalVariableFragment {
7752
+ implements
7753
+ LocalVariableElement ,
7754
+ LocalVariableFragment ,
7755
+ VariableElementOrMember {
7738
7756
late LocalVariableElementImpl2 _element2 = switch (this ) {
7739
7757
BindPatternVariableElementImpl () => BindPatternVariableElementImpl2 (this ),
7740
7758
JoinPatternVariableElementImpl () => JoinPatternVariableElementImpl2 (this ),
@@ -8268,6 +8286,8 @@ final class MetadataImpl implements Metadata {
8268
8286
}
8269
8287
}
8270
8288
8289
+ /// Common base class for all analyzer-internal classes that implement
8290
+ /// `MethodElement2` .
8271
8291
abstract class MethodElement2OrMember implements MethodElement2 {
8272
8292
@override
8273
8293
FunctionTypeImpl get type;
@@ -8433,7 +8453,13 @@ class MethodElementImpl2 extends ExecutableElementImpl2
8433
8453
}
8434
8454
}
8435
8455
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
+
8437
8463
@override
8438
8464
FunctionTypeImpl get type;
8439
8465
}
@@ -9522,7 +9548,8 @@ class ParameterElementImpl_ofImplicitSetter extends ParameterElementImpl {
9522
9548
9523
9549
/// A mixin that provides a common implementation for methods defined in
9524
9550
/// [ParameterElement] .
9525
- mixin ParameterElementMixin implements ParameterElement {
9551
+ mixin ParameterElementMixin
9552
+ implements ParameterElement , VariableElementOrMember {
9526
9553
@override
9527
9554
bool get isNamed => parameterKind.isNamed;
9528
9555
@@ -9893,7 +9920,7 @@ abstract class PromotableElementImpl2 extends VariableElementImpl2
9893
9920
class PropertyAccessorElementImpl extends ExecutableElementImpl
9894
9921
with AugmentableElement <PropertyAccessorElementImpl >
9895
9922
implements
9896
- PropertyAccessorElement ,
9923
+ PropertyAccessorElementOrMember ,
9897
9924
PropertyAccessorFragment ,
9898
9925
GetterFragment ,
9899
9926
SetterFragment {
@@ -10244,11 +10271,22 @@ class PropertyAccessorElementImpl_ImplicitSetter
10244
10271
PropertyInducingElementImpl get variable2 => super .variable2! ;
10245
10272
}
10246
10273
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
+
10247
10285
/// A concrete implementation of a [PropertyInducingElement] .
10248
10286
abstract class PropertyInducingElementImpl
10249
10287
extends NonParameterVariableElementImpl
10250
10288
with MacroTargetElement
10251
- implements PropertyInducingElement , PropertyInducingFragment {
10289
+ implements PropertyInducingElementOrMember , PropertyInducingFragment {
10252
10290
@override
10253
10291
String ? name2;
10254
10292
@@ -10449,6 +10487,14 @@ abstract class PropertyInducingElementImpl2 extends VariableElementImpl2
10449
10487
List <PropertyInducingElementImpl > get _fragments;
10450
10488
}
10451
10489
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
+
10452
10498
/// Instances of this class are set for fields and top-level variables
10453
10499
/// to perform top-level type inference during linking.
10454
10500
abstract class PropertyInducingElementTypeInference {
@@ -10844,7 +10890,7 @@ class TopLevelVariableElementImpl2 extends PropertyInducingElementImpl2
10844
10890
firstFragment.setter2? .element as SetterElement ? ;
10845
10891
10846
10892
@override
10847
- DartType get type => firstFragment.type;
10893
+ TypeImpl get type => firstFragment.type;
10848
10894
10849
10895
@override
10850
10896
T ? accept2 <T >(ElementVisitor2 <T > visitor) {
@@ -11553,9 +11599,16 @@ abstract class UriReferencedElementImpl extends _ExistingElementImpl
11553
11599
}
11554
11600
}
11555
11601
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
+
11556
11609
/// A concrete implementation of a [VariableElement] .
11557
11610
abstract class VariableElementImpl extends ElementImpl
11558
- implements VariableElement {
11611
+ implements VariableElementOrMember {
11559
11612
/// The type of this variable.
11560
11613
TypeImpl ? _type;
11561
11614
@@ -11665,7 +11718,7 @@ abstract class VariableElementImpl extends ElementImpl
11665
11718
}
11666
11719
11667
11720
abstract class VariableElementImpl2 extends ElementImpl2
11668
- implements VariableElement2 {
11721
+ implements VariableElement2OrMember {
11669
11722
@override
11670
11723
void visitChildren2 <T >(ElementVisitor2 <T > visitor) {
11671
11724
for (var child in children2) {
@@ -11674,6 +11727,13 @@ abstract class VariableElementImpl2 extends ElementImpl2
11674
11727
}
11675
11728
}
11676
11729
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
+
11677
11737
mixin WrappedElementMixin implements ElementImpl2 {
11678
11738
@override
11679
11739
bool get isSynthetic => _wrappedElement.isSynthetic;
0 commit comments