Elements. Add Element2.fragments
Change-Id: I85fb19c87b833abca99cb86c4e285d9120f96ac2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/403948
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart b/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart
index 4a991a7..0634151 100644
--- a/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart
+++ b/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart
@@ -5,7 +5,6 @@
import 'package:analysis_server/src/protocol_server.dart' as protocol;
import 'package:analysis_server/src/services/search/search_engine.dart';
import 'package:analyzer/dart/element/element2.dart';
-import 'package:analyzer/src/utilities/extensions/element.dart';
class ImplementedComputer {
final SearchEngine searchEngine;
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart
index db25375..740f61f 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart
@@ -15,7 +15,6 @@
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/util/performance/operation_performance.dart';
-import 'package:analyzer/src/utilities/extensions/element.dart';
typedef StaticOptions = Either2<bool, ReferenceOptions>;
diff --git a/pkg/analyzer/lib/dart/element/element2.dart b/pkg/analyzer/lib/dart/element/element2.dart
index 7c4c221..3f36d78 100644
--- a/pkg/analyzer/lib/dart/element/element2.dart
+++ b/pkg/analyzer/lib/dart/element/element2.dart
@@ -111,6 +111,9 @@
abstract class BindPatternVariableElement2 implements PatternVariableElement2 {
@override
BindPatternVariableFragment get firstFragment;
+
+ @override
+ List<BindPatternVariableFragment> get fragments;
}
/// The portion of a [BindPatternVariableElement2] contributed by a single
@@ -138,6 +141,9 @@
@override
ClassFragment get firstFragment;
+ @override
+ List<ClassFragment> get fragments;
+
/// Whether the class or its superclass declares a non-final instance field.
bool get hasNonFinalField;
@@ -267,6 +273,9 @@
@override
ConstructorFragment get firstFragment;
+ @override
+ List<ConstructorFragment> get fragments;
+
/// Whether the constructor is a const constructor.
bool get isConst;
@@ -406,6 +415,9 @@
/// invocations of [Fragment.nextFragment].
Fragment get firstFragment;
+ /// The fragments this element consists of.
+ List<Fragment> get fragments;
+
/// The unique integer identifier of this element.
int get id;
@@ -608,6 +620,9 @@
@override
EnumFragment get firstFragment;
+
+ @override
+ List<EnumFragment> get fragments;
}
/// The portion of an [EnumElement2] contributed by a single declaration.
@@ -638,6 +653,9 @@
@override
ExecutableFragment get firstFragment;
+ @override
+ List<ExecutableFragment> get fragments;
+
/// Whether the executable element did not have an explicit return type
/// specified for it in the original source.
bool get hasImplicitReturnType;
@@ -712,6 +730,9 @@
@override
ExtensionFragment get firstFragment;
+
+ @override
+ List<ExtensionFragment> get fragments;
}
/// The portion of an [ExtensionElement2] contributed by a single
@@ -736,6 +757,9 @@
@override
ExtensionTypeFragment get firstFragment;
+ @override
+ List<ExtensionTypeFragment> get fragments;
+
/// The primary constructor of this extension.
ConstructorElement2 get primaryConstructor2;
@@ -781,6 +805,9 @@
@override
FieldFragment get firstFragment;
+ @override
+ List<FieldFragment> get fragments;
+
/// Whether the field is abstract.
///
/// Executable fields are abstract if they are declared with the `abstract`
@@ -811,6 +838,9 @@
@override
FieldFormalParameterFragment get firstFragment;
+
+ @override
+ List<FieldFormalParameterFragment> get fragments;
}
/// The portion of a [FieldFormalParameterElement2] contributed by a single
@@ -868,6 +898,9 @@
/// formal parameter.
List<FormalParameterElement> get formalParameters;
+ @override
+ List<FormalParameterFragment> get fragments;
+
/// Whether the parameter has a default value.
bool get hasDefaultValue;
@@ -1051,6 +1084,9 @@
/// The formal parameters defined by this element.
List<FormalParameterElement> get formalParameters;
+ @override
+ List<FunctionTypedFragment> get fragments;
+
/// The return type defined by this element.
DartType get returnType;
@@ -1081,6 +1117,9 @@
abstract class GenericFunctionTypeElement2 implements FunctionTypedElement2 {
@override
GenericFunctionTypeFragment get firstFragment;
+
+ @override
+ List<GenericFunctionTypeFragment> get fragments;
}
/// The portion of a [GenericFunctionTypeElement2] coming from a single
@@ -1117,6 +1156,9 @@
@override
GetterFragment get firstFragment;
+
+ @override
+ List<GetterFragment> get fragments;
}
/// The portion of a [GetterElement] contributed by a single declaration.
@@ -1183,6 +1225,9 @@
@override
InstanceFragment get firstFragment;
+ @override
+ List<InstanceFragment> get fragments;
+
/// The getters declared in this element.
List<GetterElement> get getters2;
@@ -1297,6 +1342,9 @@
@override
InterfaceFragment get firstFragment;
+ @override
+ List<InterfaceFragment> get fragments;
+
/// The interfaces that are implemented by this class.
///
/// <b>Note:</b> Because the element model represents the state of the code,
@@ -1437,6 +1485,9 @@
@override
JoinPatternVariableFragment get firstFragment;
+ @override
+ List<JoinPatternVariableFragment> get fragments;
+
/// Whether the [variables2] are consistent.
///
/// The variables are consistent if they are present in all branches, and have
@@ -1483,6 +1534,9 @@
LabelFragment get firstFragment;
@override
+ List<LabelFragment> get fragments;
+
+ @override
LibraryElement2 get library2;
}
@@ -1562,6 +1616,7 @@
///
/// This includes the defining fragment, and fragments included using the
/// `part` directive.
+ @override
List<LibraryFragment> get fragments;
/// The getters defined in this library.
@@ -1826,6 +1881,9 @@
implements ExecutableElement2, LocalElement2 {
@override
LocalFunctionFragment get firstFragment;
+
+ @override
+ List<LocalFunctionFragment> get fragments;
}
/// The portion of a [LocalFunctionElement] contributed by a single
@@ -1864,6 +1922,9 @@
@override
LocalVariableFragment get firstFragment;
+ @override
+ List<LocalVariableFragment> get fragments;
+
/// Whether the variable has an initializer at declaration.
bool get hasInitializer;
}
@@ -2012,6 +2073,9 @@
@override
MethodFragment get firstFragment;
+ @override
+ List<MethodFragment> get fragments;
+
/// Whether the method defines an operator.
///
/// The test might be based on the name of the executable element, in which
@@ -2043,6 +2107,9 @@
@override
MixinFragment get firstFragment;
+ @override
+ List<MixinFragment> get fragments;
+
/// Whether the mixin is a base mixin.
///
/// A mixin is a base mixin if it has an explicit `base` modifier.
@@ -2105,6 +2172,9 @@
@override
MultiplyDefinedFragment get firstFragment;
+
+ @override
+ List<MultiplyDefinedFragment> get fragments;
}
/// The fragment for a [MultiplyDefinedElement2].
@@ -2139,6 +2209,9 @@
@override
PatternVariableFragment get firstFragment;
+ @override
+ List<PatternVariableFragment> get fragments;
+
/// The variable in which this variable joins with other pattern variables
/// with the same name, in a logical-or pattern, or shared case scope.
JoinPatternVariableElement2? get join2;
@@ -2175,6 +2248,9 @@
@override
PrefixFragment get firstFragment;
+ @override
+ List<PrefixFragment> get fragments;
+
/// The imports that share this prefix.
List<LibraryImport> get imports;
@@ -2216,6 +2292,9 @@
abstract class PromotableElement2 implements VariableElement2 {
@override
PromotableFragment get firstFragment;
+
+ @override
+ List<PromotableFragment> get fragments;
}
/// The portion of a [PromotableElement2] contributed by a single declaration.
@@ -2246,6 +2325,9 @@
@override
PropertyAccessorFragment get firstFragment;
+ @override
+ List<PropertyAccessorFragment> get fragments;
+
/// The field or top-level variable associated with this getter.
///
/// If this getter was explicitly defined (is not synthetic) then the variable
@@ -2295,6 +2377,9 @@
@override
PropertyInducingFragment get firstFragment;
+ @override
+ List<PropertyInducingFragment> get fragments;
+
/// The getter associated with this variable.
///
/// If this variable was explicitly defined (is not synthetic) then the
@@ -2389,6 +2474,9 @@
@override
SetterFragment get firstFragment;
+
+ @override
+ List<SetterFragment> get fragments;
}
/// The portion of a [SetterElement] contributed by a single declaration.
@@ -2426,6 +2514,9 @@
@override
SuperFormalParameterFragment get firstFragment;
+ @override
+ List<SuperFormalParameterFragment> get fragments;
+
/// The associated super-constructor parameter, from the super-constructor
/// that is referenced by the implicit or explicit super-constructor
/// invocation.
@@ -2461,6 +2552,9 @@
@override
TopLevelFunctionFragment get firstFragment;
+ @override
+ List<TopLevelFunctionFragment> get fragments;
+
/// Whether the function represents `identical` from the `dart:core` library.
bool get isDartCoreIdentical;
@@ -2504,6 +2598,9 @@
@override
TopLevelVariableFragment get firstFragment;
+ @override
+ List<TopLevelVariableFragment> get fragments;
+
/// Whether the field was explicitly marked as being external.
bool get isExternal;
}
@@ -2550,6 +2647,9 @@
@override
TypeAliasFragment get firstFragment;
+ @override
+ List<TypeAliasFragment> get fragments;
+
/// Returns the type resulting from instantiating this typedef with the given
/// [typeArguments] and [nullabilitySuffix].
///
@@ -2593,6 +2693,9 @@
@override
TypeDefiningFragment get firstFragment;
+
+ @override
+ List<TypeDefiningFragment> get fragments;
}
/// The portion of a [TypeDefiningElement2] contributed by a single declaration.
@@ -2626,6 +2729,9 @@
@override
TypeParameterFragment get firstFragment;
+ @override
+ List<TypeParameterFragment> get fragments;
+
/// Returns the [TypeParameterType] with the given [nullabilitySuffix] for
/// this type parameter.
TypeParameterType instantiate({
@@ -2655,6 +2761,9 @@
@override
TypeParameterizedFragment get firstFragment;
+ @override
+ List<TypeParameterizedFragment> get fragments;
+
/// If the element defines a type, indicates whether the type may safely
/// appear without explicit type arguments as the bounds of a type parameter
/// declaration.
@@ -2702,6 +2811,9 @@
@override
VariableFragment get firstFragment;
+ @override
+ List<VariableFragment> get fragments;
+
/// Whether the variable element did not have an explicit type specified
/// for it.
bool get hasImplicitType;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 2a3a504..1b1a08c 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -127,12 +127,12 @@
super.element as BindPatternVariableElementImpl2;
@override
- BindPatternVariableFragment? get nextFragment =>
- super.nextFragment as BindPatternVariableFragment?;
+ BindPatternVariableElementImpl? get nextFragment =>
+ super.nextFragment as BindPatternVariableElementImpl?;
@override
- BindPatternVariableFragment? get previousFragment =>
- super.previousFragment as BindPatternVariableFragment?;
+ BindPatternVariableElementImpl? get previousFragment =>
+ super.previousFragment as BindPatternVariableElementImpl?;
}
class BindPatternVariableElementImpl2 extends PatternVariableElementImpl2
@@ -140,8 +140,18 @@
BindPatternVariableElementImpl2(super._wrappedElement);
@override
- BindPatternVariableFragment get firstFragment =>
- super.firstFragment as BindPatternVariableFragment;
+ BindPatternVariableElementImpl get firstFragment =>
+ super.firstFragment as BindPatternVariableElementImpl;
+
+ @override
+ List<BindPatternVariableElementImpl> get fragments {
+ return [
+ for (BindPatternVariableElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
/// This flag is set to `true` if this variable clashes with another
/// pattern variable with the same name within the same pattern.
@@ -654,6 +664,16 @@
}
@override
+ List<ClassElementImpl> get fragments {
+ return [
+ for (ClassElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get hasNonFinalField => firstFragment.hasNonFinalField;
@override
@@ -1520,7 +1540,7 @@
}
@override
- ConstructorFragment? get nextFragment => augmentation;
+ ConstructorElementImpl? get nextFragment => augmentation;
@override
Element get nonSynthetic {
@@ -1625,7 +1645,7 @@
ConstructorElementImpl? fragment = firstFragment;
while (fragment != null) {
fragment.element = this;
- fragment = fragment.nextFragment as ConstructorElementImpl?;
+ fragment = fragment.nextFragment;
}
}
@@ -1648,6 +1668,16 @@
firstFragment.enclosingElement3.element;
@override
+ List<ConstructorElementImpl> get fragments {
+ return [
+ for (ConstructorElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isConst => firstFragment.isConst;
@override
@@ -2068,6 +2098,16 @@
DynamicElementImpl get firstFragment => DynamicElementImpl.instance;
@override
+ List<DynamicElementImpl> get fragments {
+ return [
+ for (DynamicElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isSynthetic => true;
@override
@@ -2615,6 +2655,16 @@
}
@override
+ List<Fragment> get fragments {
+ return [
+ for (Fragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get hasAlwaysThrows {
var metadata = this.metadata;
for (var i = 0; i < metadata.length; i++) {
@@ -3312,6 +3362,16 @@
// TODO(augmentations): implement enclosingElement2
Element2? get enclosingElement2 => throw UnimplementedError();
+ @override
+ List<Fragment> get fragments {
+ return [
+ for (Fragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
/// Return an identifier that uniquely identifies this element among the
/// children of this element's parent.
String get identifier {
@@ -3587,10 +3647,11 @@
ElementKind get kind => ElementKind.ENUM;
@override
- EnumFragment? get nextFragment => super.nextFragment as EnumFragment?;
+ EnumElementImpl? get nextFragment => super.nextFragment as EnumElementImpl?;
@override
- EnumFragment? get previousFragment => super.previousFragment as EnumFragment?;
+ EnumElementImpl? get previousFragment =>
+ super.previousFragment as EnumElementImpl?;
ConstFieldElementImpl? get valuesField {
for (var field in fields) {
@@ -3637,6 +3698,16 @@
constants.map((e) => e.asElement2).toList();
@override
+ List<EnumElementImpl> get fragments {
+ return [
+ for (EnumElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
T? accept2<T>(ElementVisitor2<T> visitor) {
return visitor.visitEnumElement(this);
}
@@ -3935,12 +4006,12 @@
}
@override
- ExtensionFragment? get nextFragment =>
- super.nextFragment as ExtensionFragment?;
+ ExtensionElementImpl? get nextFragment =>
+ super.nextFragment as ExtensionElementImpl?;
@override
- ExtensionFragment? get previousFragment =>
- super.previousFragment as ExtensionFragment?;
+ ExtensionElementImpl? get previousFragment =>
+ super.previousFragment as ExtensionElementImpl?;
@override
DartType get thisType => extendedType;
@@ -4012,6 +4083,16 @@
}
@override
+ List<ExtensionElementImpl> get fragments {
+ return [
+ for (ExtensionElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
DartType get thisType => extendedType;
@override
@@ -4057,12 +4138,12 @@
}
@override
- ExtensionTypeFragment? get nextFragment =>
- super.nextFragment as ExtensionTypeFragment?;
+ ExtensionTypeElementImpl? get nextFragment =>
+ super.nextFragment as ExtensionTypeElementImpl?;
@override
- ExtensionTypeFragment? get previousFragment =>
- super.previousFragment as ExtensionTypeFragment?;
+ ExtensionTypeElementImpl? get previousFragment =>
+ super.previousFragment as ExtensionTypeElementImpl?;
@override
ConstructorElementImpl get primaryConstructor {
@@ -4120,6 +4201,16 @@
}
@override
+ List<ExtensionTypeElementImpl> get fragments {
+ return [
+ for (ExtensionTypeElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
ConstructorElement2 get primaryConstructor2 => primaryConstructor.element;
@override
@@ -4234,11 +4325,11 @@
}
@override
- FieldFragment? get nextFragment => super.nextFragment as FieldFragment?;
+ FieldElementImpl? get nextFragment => super.nextFragment as FieldElementImpl?;
@override
- FieldFragment? get previousFragment =>
- super.previousFragment as FieldFragment?;
+ FieldElementImpl? get previousFragment =>
+ super.previousFragment as FieldElementImpl?;
@override
T? accept<T>(ElementVisitor<T> visitor) => visitor.visitFieldElement(this);
@@ -4257,7 +4348,7 @@
FieldElementImpl? fragment = firstFragment;
while (fragment != null) {
fragment.element = this;
- fragment = fragment.nextFragment as FieldElementImpl?;
+ fragment = fragment.nextFragment;
}
}
@@ -4269,6 +4360,16 @@
(firstFragment._enclosingElement3 as InstanceFragment).element;
@override
+ List<FieldElementImpl> get fragments {
+ return [
+ for (FieldElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
GetterElement? get getter2 => firstFragment.getter?.element as GetterElement?;
@override
@@ -4359,12 +4460,12 @@
bool get isInitializingFormal => true;
@override
- FieldFormalParameterFragment? get nextFragment =>
- super.nextFragment as FieldFormalParameterFragment?;
+ FieldFormalParameterElementImpl? get nextFragment =>
+ super.nextFragment as FieldFormalParameterElementImpl?;
@override
- FieldFormalParameterFragment? get previousFragment =>
- super.previousFragment as FieldFormalParameterFragment?;
+ FieldFormalParameterElementImpl? get previousFragment =>
+ super.previousFragment as FieldFormalParameterElementImpl?;
@override
T? accept<T>(ElementVisitor<T> visitor) =>
@@ -4387,8 +4488,18 @@
};
@override
- FieldFormalParameterFragment get firstFragment =>
- super.firstFragment as FieldFormalParameterFragment;
+ FieldFormalParameterElementImpl get firstFragment =>
+ super.firstFragment as FieldFormalParameterElementImpl;
+
+ @override
+ List<FieldFormalParameterElementImpl> get fragments {
+ return [
+ for (FieldFormalParameterElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
}
class FormalParameterElementImpl extends PromotableElementImpl2
@@ -4405,7 +4516,7 @@
ParameterElementImpl? fragment = wrappedElement;
while (fragment != null) {
fragment.element = this;
- fragment = fragment.nextFragment as ParameterElementImpl?;
+ fragment = fragment.nextFragment;
}
}
@@ -4417,8 +4528,7 @@
String? get defaultValueCode => wrappedElement.defaultValueCode;
@override
- FormalParameterFragment get firstFragment =>
- wrappedElement as FormalParameterFragment;
+ ParameterElementImpl get firstFragment => wrappedElement;
@override
// TODO(augmentations): Implement the merge of formal parameters.
@@ -4427,6 +4537,16 @@
.toList();
@override
+ List<ParameterElementImpl> get fragments {
+ return [
+ for (ParameterElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
// TODO(augmentations): Implement the merge of formal parameters.
bool get hasDefaultValue => wrappedElement.hasDefaultValue;
@@ -5100,10 +5220,10 @@
ElementKind get kind => ElementKind.FUNCTION;
@override
- ExecutableFragment? get nextFragment => augmentation;
+ FunctionElementImpl? get nextFragment => augmentation;
@override
- ExecutableFragment? get previousFragment => augmentationTarget;
+ FunctionElementImpl? get previousFragment => augmentationTarget;
@override
bool get _includeNameOffsetInIdentifier {
@@ -5203,7 +5323,7 @@
int? get nameOffset2 => null;
@override
- GenericFunctionTypeFragment? get nextFragment => null;
+ GenericFunctionTypeElementImpl? get nextFragment => null;
@override
List<ParameterElement> get parameters {
@@ -5220,7 +5340,7 @@
}
@override
- GenericFunctionTypeFragment? get previousFragment => null;
+ GenericFunctionTypeElementImpl? get previousFragment => null;
@override
DartType get returnType {
@@ -5277,7 +5397,7 @@
String? get documentationComment => _wrappedElement.documentationComment;
@override
- GenericFunctionTypeFragment get firstFragment => _wrappedElement;
+ GenericFunctionTypeElementImpl get firstFragment => _wrappedElement;
@override
List<FormalParameterElement> get formalParameters =>
@@ -5286,6 +5406,16 @@
.toList();
@override
+ List<GenericFunctionTypeElementImpl> get fragments {
+ return [
+ for (GenericFunctionTypeElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isSimplyBounded => _wrappedElement.isSimplyBounded;
@override
@@ -5337,7 +5467,7 @@
PropertyAccessorElementImpl? fragment = firstFragment;
while (fragment != null) {
fragment.element = this;
- fragment = fragment.nextFragment as PropertyAccessorElementImpl?;
+ fragment = fragment.nextFragment;
}
}
@@ -5349,6 +5479,16 @@
firstFragment.correspondingSetter2?.element as SetterElement?;
@override
+ List<PropertyAccessorElementImpl> get fragments {
+ return [
+ for (PropertyAccessorElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
ElementKind get kind => ElementKind.GETTER;
@override
@@ -6580,12 +6720,12 @@
}
@override
- JoinPatternVariableFragment? get nextFragment =>
- super.nextFragment as JoinPatternVariableFragment?;
+ JoinPatternVariableElementImpl? get nextFragment =>
+ super.nextFragment as JoinPatternVariableElementImpl?;
@override
- JoinPatternVariableFragment? get previousFragment =>
- super.previousFragment as JoinPatternVariableFragment?;
+ JoinPatternVariableElementImpl? get previousFragment =>
+ super.previousFragment as JoinPatternVariableElementImpl?;
/// Returns this variable, and variables that join into it.
List<PatternVariableElementImpl> get transitiveVariables {
@@ -6614,8 +6754,18 @@
JoinPatternVariableElementImpl2(super._wrappedElement);
@override
- JoinPatternVariableFragment get firstFragment =>
- super.firstFragment as JoinPatternVariableFragment;
+ JoinPatternVariableElementImpl get firstFragment =>
+ super.firstFragment as JoinPatternVariableElementImpl;
+
+ @override
+ List<JoinPatternVariableElementImpl> get fragments {
+ return [
+ for (JoinPatternVariableElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
shared.JoinedPatternVariableInconsistency get inconsistency =>
_wrappedElement.inconsistency;
@@ -6705,10 +6855,10 @@
int? get nameOffset2 => nameOffset;
@override
- LabelFragment? get nextFragment => null;
+ LabelElementImpl? get nextFragment => null;
@override
- LabelFragment? get previousFragment => null;
+ LabelElementImpl? get previousFragment => null;
@override
T? accept<T>(ElementVisitor<T> visitor) => visitor.visitLabelElement(this);
@@ -6729,7 +6879,12 @@
ExecutableElement2? get enclosingElement2 => null;
@override
- LabelFragment get firstFragment => _wrappedElement;
+ LabelElementImpl get firstFragment => _wrappedElement;
+
+ @override
+ List<LabelElementImpl> get fragments {
+ return [firstFragment];
+ }
@override
LibraryElement2 get library2 {
@@ -7468,6 +7623,16 @@
.toList();
@override
+ List<FunctionElementImpl> get fragments {
+ return [
+ for (FunctionElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get hasImplicitReturnType => _wrappedElement.hasImplicitReturnType;
@override
@@ -7569,10 +7734,10 @@
int? get nameOffset2 => nameOffset;
@override
- LocalVariableFragment? get nextFragment => null;
+ LocalVariableElementImpl? get nextFragment => null;
@override
- LocalVariableFragment? get previousFragment => null;
+ LocalVariableElementImpl? get previousFragment => null;
@override
T? accept<T>(ElementVisitor<T> visitor) =>
@@ -7594,7 +7759,12 @@
String? get documentationComment => null;
@override
- LocalVariableFragment get firstFragment => _wrappedElement;
+ LocalVariableElementImpl get firstFragment => _wrappedElement;
+
+ @override
+ List<LocalVariableElementImpl> get fragments {
+ return [firstFragment];
+ }
@override
bool get hasImplicitType => _wrappedElement.hasImplicitType;
@@ -8119,7 +8289,7 @@
}
@override
- MethodFragment? get nextFragment => augmentation;
+ MethodElementImpl? get nextFragment => augmentation;
@override
Element get nonSynthetic {
@@ -8130,7 +8300,7 @@
}
@override
- MethodFragment? get previousFragment => augmentationTarget;
+ MethodElementImpl? get previousFragment => augmentationTarget;
@override
T? accept<T>(ElementVisitor<T> visitor) => visitor.visitMethodElement(this);
@@ -8167,6 +8337,16 @@
(firstFragment._enclosingElement3 as InstanceFragment).element;
@override
+ List<MethodElementImpl> get fragments {
+ return [
+ for (MethodElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isOperator => firstFragment.isOperator;
@override
@@ -8241,11 +8421,11 @@
}
@override
- MixinFragment? get nextFragment => super.nextFragment as MixinFragment?;
+ MixinElementImpl? get nextFragment => super.nextFragment as MixinElementImpl?;
@override
- MixinFragment? get previousFragment =>
- super.previousFragment as MixinFragment?;
+ MixinElementImpl? get previousFragment =>
+ super.previousFragment as MixinElementImpl?;
@override
List<InterfaceType> get superclassConstraints {
@@ -8301,6 +8481,16 @@
}
@override
+ List<MixinElementImpl> get fragments {
+ return [
+ for (MixinElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isBase => firstFragment.isBase;
@override
@@ -8714,7 +8904,8 @@
final List<Element2> conflictingElements2;
@override
- late final firstFragment = MultiplyDefinedFragmentImpl(this);
+ late final MultiplyDefinedFragmentImpl firstFragment =
+ MultiplyDefinedFragmentImpl(this);
MultiplyDefinedElementImpl2(
this.libraryFragment,
@@ -8743,6 +8934,11 @@
Null get enclosingElement2 => null;
@override
+ List<MultiplyDefinedFragmentImpl> get fragments {
+ return [firstFragment];
+ }
+
+ @override
bool get isPrivate => false;
@override
@@ -8946,6 +9142,11 @@
NeverElementImpl get firstFragment => NeverElementImpl.instance;
@override
+ List<NeverElementImpl> get fragments {
+ return [firstFragment];
+ }
+
+ @override
bool get isSynthetic => true;
@override
@@ -9136,7 +9337,7 @@
@override
// TODO(augmentations): Support chaining between the fragments.
- FormalParameterFragment? get nextFragment => null;
+ ParameterElementImpl? get nextFragment => null;
@override
List<ParameterElement> get parameters {
@@ -9154,7 +9355,7 @@
@override
// TODO(augmentations): Support chaining between the fragments.
- FormalParameterFragment? get previousFragment => null;
+ ParameterElementImpl? get previousFragment => null;
@override
List<TypeParameterElement> get typeParameters {
@@ -9365,12 +9566,12 @@
JoinPatternVariableFragment? get join2 => join;
@override
- PatternVariableFragment? get nextFragment =>
- super.nextFragment as PatternVariableFragment?;
+ PatternVariableElementImpl? get nextFragment =>
+ super.nextFragment as PatternVariableElementImpl?;
@override
- PatternVariableFragment? get previousFragment =>
- super.previousFragment as PatternVariableFragment?;
+ PatternVariableElementImpl? get previousFragment =>
+ super.previousFragment as PatternVariableElementImpl?;
/// Return the root [join], or self.
PatternVariableElementImpl get rootVariable {
@@ -9383,8 +9584,18 @@
PatternVariableElementImpl2(super._wrappedElement);
@override
- PatternVariableFragment get firstFragment =>
- super.firstFragment as PatternVariableFragment;
+ PatternVariableElementImpl get firstFragment =>
+ super.firstFragment as PatternVariableElementImpl;
+
+ @override
+ List<PatternVariableElementImpl> get fragments {
+ return [
+ for (PatternVariableElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
/// This flag is set to `true` while we are visiting the [WhenClause] of
/// the [GuardedPattern] that declares this variable.
@@ -9500,6 +9711,7 @@
@override
Null get enclosingElement2 => null;
+ @override
List<PrefixFragmentImpl> get fragments {
return [
for (PrefixFragmentImpl? fragment = firstFragment;
@@ -9690,7 +9902,7 @@
PropertyAccessorElementImpl firstFragment = this;
var previousFragment = firstFragment.previousFragment;
while (previousFragment != null) {
- firstFragment = previousFragment as PropertyAccessorElementImpl;
+ firstFragment = previousFragment;
previousFragment = firstFragment.previousFragment;
}
// As a side-effect of creating the element, all of the fragments in the
@@ -9770,10 +9982,10 @@
}
@override
- PropertyAccessorFragment? get nextFragment => augmentation;
+ PropertyAccessorElementImpl? get nextFragment => augmentation;
@override
- PropertyAccessorFragment? get previousFragment => augmentationTarget;
+ PropertyAccessorElementImpl? get previousFragment => augmentationTarget;
@override
PropertyInducingElementImpl? get variable2 {
@@ -10185,7 +10397,7 @@
PropertyAccessorElementImpl? fragment = firstFragment;
while (fragment != null) {
fragment.element = this;
- fragment = fragment.nextFragment as PropertyAccessorElementImpl?;
+ fragment = fragment.nextFragment;
}
}
@@ -10200,6 +10412,16 @@
Element2? get enclosingElement2 => firstFragment.enclosingFragment?.element;
@override
+ List<PropertyAccessorElementImpl> get fragments {
+ return [
+ for (PropertyAccessorElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
ElementKind get kind => ElementKind.SETTER;
@override
@@ -10283,12 +10505,12 @@
bool get isSuperFormal => true;
@override
- SuperFormalParameterFragment? get nextFragment =>
- super.nextFragment as SuperFormalParameterFragment?;
+ SuperFormalParameterElementImpl? get nextFragment =>
+ super.nextFragment as SuperFormalParameterElementImpl?;
@override
- SuperFormalParameterFragment? get previousFragment =>
- super.previousFragment as SuperFormalParameterFragment?;
+ SuperFormalParameterElementImpl? get previousFragment =>
+ super.previousFragment as SuperFormalParameterElementImpl?;
@override
ParameterElement? get superConstructorParameter {
@@ -10340,6 +10562,16 @@
super.firstFragment as SuperFormalParameterElementImpl;
@override
+ List<SuperFormalParameterElementImpl> get fragments {
+ return [
+ for (SuperFormalParameterElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
FormalParameterElement? get superConstructorParameter2 {
return firstFragment.superConstructorParameter?.asElement2;
}
@@ -10380,6 +10612,16 @@
Element2? get enclosingElement2 => firstFragment._enclosingElement3?.library2;
@override
+ List<FunctionElementImpl> get fragments {
+ return [
+ for (FunctionElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isDartCoreIdentical => firstFragment.isDartCoreIdentical;
@override
@@ -10444,12 +10686,12 @@
}
@override
- TopLevelVariableFragment? get nextFragment =>
- super.nextFragment as TopLevelVariableFragment?;
+ TopLevelVariableElementImpl? get nextFragment =>
+ super.nextFragment as TopLevelVariableElementImpl?;
@override
- TopLevelVariableFragment? get previousFragment =>
- super.previousFragment as TopLevelVariableFragment?;
+ TopLevelVariableElementImpl? get previousFragment =>
+ super.previousFragment as TopLevelVariableElementImpl?;
@override
T? accept<T>(ElementVisitor<T> visitor) =>
@@ -10481,6 +10723,16 @@
firstFragment.library as LibraryElement2;
@override
+ List<TopLevelVariableElementImpl> get fragments {
+ return [
+ for (TopLevelVariableElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
GetterElement? get getter2 =>
firstFragment.getter2?.element as GetterElement?;
@@ -10662,11 +10914,11 @@
@override
// TODO(augmentations): Support the fragment chain.
- TypeAliasFragment? get nextFragment => null;
+ TypeAliasElementImpl? get nextFragment => null;
@override
// TODO(augmentations): Support the fragment chain.
- TypeAliasFragment? get previousFragment => null;
+ TypeAliasElementImpl? get previousFragment => null;
/// Instantiates this type alias with its type parameters as arguments.
DartType get rawType {
@@ -10817,6 +11069,16 @@
firstFragment.library as LibraryElement2;
@override
+ List<TypeAliasElementImpl> get fragments {
+ return [
+ for (TypeAliasElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isSimplyBounded => firstFragment.isSimplyBounded;
@override
@@ -11073,6 +11335,16 @@
@override
DartType? get boundShared => bound;
+ @override
+ List<TypeParameterElementImpl> get fragments {
+ return [
+ for (TypeParameterElementImpl? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
bool get isLegacyCovariant => firstFragment.isLegacyCovariant;
@override
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 36334fa..70163ae 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -62,6 +62,16 @@
ConstructorFragment get firstFragment => _element2.firstFragment;
@override
+ List<ConstructorFragment> get fragments {
+ return [
+ for (ConstructorFragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get isConst => declaration.isConst;
@override
@@ -229,6 +239,16 @@
parameters.map((fragment) => fragment.asElement2).toList();
@override
+ List<ExecutableFragment> get fragments {
+ return [
+ for (ExecutableFragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get hasImplicitReturnType => declaration.hasImplicitReturnType;
@override
@@ -520,6 +540,16 @@
FieldFragment get firstFragment => _element2.firstFragment;
@override
+ List<FieldFragment> get fragments {
+ return [
+ for (FieldFragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
PropertyAccessorElement? get getter {
var baseGetter = declaration.getter;
if (baseGetter == null) {
@@ -708,6 +738,16 @@
GetterFragment get firstFragment => _element2.firstFragment;
@override
+ List<GetterFragment> get fragments {
+ return [
+ for (GetterFragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment as GetterFragment?)
+ fragment,
+ ];
+ }
+
+ @override
String? get lookupName => _element2.lookupName;
@override
@@ -1015,6 +1055,16 @@
MethodFragment get firstFragment => _element2.firstFragment;
@override
+ List<MethodFragment> get fragments {
+ return [
+ for (MethodFragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
LibraryElement2 get library2 => _element2.library2;
@override
@@ -1146,6 +1196,16 @@
_element2.formalParameters;
@override
+ List<FormalParameterFragment> get fragments {
+ return [
+ for (FormalParameterFragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment)
+ fragment,
+ ];
+ }
+
+ @override
bool get hasDefaultValue => declaration.hasDefaultValue;
@override
@@ -1432,6 +1492,16 @@
SetterFragment get firstFragment => _element2.firstFragment;
@override
+ List<SetterFragment> get fragments {
+ return [
+ for (SetterFragment? fragment = firstFragment;
+ fragment != null;
+ fragment = fragment.nextFragment as SetterFragment?)
+ fragment,
+ ];
+ }
+
+ @override
String? get lookupName => _element2.lookupName;
@override
diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart
index d234639..8ffcc2b 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/element.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart
@@ -25,17 +25,6 @@
}
}
-extension ClassElementImpl2Extension on ClassElementImpl2 {
- List<ClassElementImpl> get fragments {
- return [
- for (ClassElementImpl? fragment = firstFragment;
- fragment != null;
- fragment = fragment.nextFragment)
- fragment,
- ];
- }
-}
-
extension CompilationUnitElementExtension on CompilationUnitElement {
LibraryFragment get asElement2 {
return this as LibraryFragment;
@@ -77,15 +66,6 @@
}
extension Element2Extension on Element2 {
- List<Fragment> get fragments {
- return [
- for (Fragment? fragment = firstFragment;
- fragment != null;
- fragment = fragment.nextFragment)
- fragment,
- ];
- }
-
/// Whether the element is effectively [internal].
bool get isInternal {
if (this case Annotatable annotatable) {