Elements. Restore InstanceElement.augmented
This API was removed in 7.4.0 under the assumption that its removal would not be a breaking change, because it was marked as `@experimental`. But it turns out that some clients had been published to pub that relied on it (for example `drift_dev`).
To avoid breakages in those packages, the API has been restored (by pulling `AugmentedXyz` APIs from the published version `7.3.0`, and re-implementing on top of new `XyzElement2`). However the restored API is still slated for removal in analyzer 8.0.0, so it's been marked as `@deprecated`. Clients relying on this API should migrate away from it as soon as possible.
Bug: https://github.com/dart-lang/sdk/issues/60545
Bug: https://github.com/dart-lang/sdk/issues/60553
Change-Id: If12c1fa37cafa63d0eef121a39350ce6d41ab68f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/422846
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index ba26f16..9dc4f2b 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 7.4.1
+* Restore `InstanceElement.augmented` getter.
+ This API was removed in 7.4.0 under the assumption that its removal would
+ not be a breaking change, because it was marked as `@experimental`.
+ But it turns out that some clients had been published to pub that relied
+ on it. So, these APIs were restored, and implemented on top of `Element2`.
+
## 7.4.0
* Updated SDK constraint to `^3.5.0`.
* Deprecated element model V1.
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index 91921cf..f787bf4 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -3014,10 +3014,54 @@
toSymbolValue (method: String? Function())
toTypeValue (method: DartType? Function())
package:analyzer/dart/element/element.dart:
+ AugmentedClassElement (class extends Object implements AugmentedInterfaceElement, deprecated):
+ new (constructor: AugmentedClassElement Function())
+ firstFragment (getter: ClassElement)
+ AugmentedEnumElement (class extends Object implements AugmentedInterfaceElement, deprecated):
+ new (constructor: AugmentedEnumElement Function())
+ constants (getter: List<FieldElement>)
+ firstFragment (getter: EnumElement)
+ AugmentedExtensionElement (class extends Object implements AugmentedInstanceElement, deprecated):
+ new (constructor: AugmentedExtensionElement Function())
+ extendedType (getter: DartType)
+ AugmentedExtensionTypeElement (class extends Object implements AugmentedInterfaceElement, deprecated):
+ new (constructor: AugmentedExtensionTypeElement Function())
+ firstFragment (getter: ExtensionTypeElement)
+ primaryConstructor (getter: ConstructorElement)
+ representation (getter: FieldElement)
+ typeErasure (getter: DartType)
+ AugmentedInstanceElement (class extends Object, deprecated):
+ new (constructor: AugmentedInstanceElement Function())
+ accessors (getter: List<PropertyAccessorElement>)
+ fields (getter: List<FieldElement>)
+ firstFragment (getter: InstanceElement)
+ metadata (getter: List<ElementAnnotation>)
+ methods (getter: List<MethodElement>)
+ thisType (getter: DartType)
+ getField (method: FieldElement? Function(String))
+ getGetter (method: PropertyAccessorElement? Function(String))
+ getMethod (method: MethodElement? Function(String))
+ getSetter (method: PropertyAccessorElement? Function(String))
+ lookUpGetter (method: PropertyAccessorElement? Function({required LibraryElement library, required String name}))
+ lookUpMethod (method: MethodElement? Function({required LibraryElement library, required String name}))
+ lookUpSetter (method: PropertyAccessorElement? Function({required LibraryElement library, required String name}))
+ AugmentedInterfaceElement (class extends Object implements AugmentedInstanceElement, deprecated):
+ new (constructor: AugmentedInterfaceElement Function())
+ constructors (getter: List<ConstructorElement>)
+ firstFragment (getter: InterfaceElement)
+ interfaces (getter: List<InterfaceType>)
+ mixins (getter: List<InterfaceType>)
+ thisType (getter: InterfaceType)
+ unnamedConstructor (getter: ConstructorElement?)
+ getNamedConstructor (method: ConstructorElement? Function(String))
+ AugmentedMixinElement (class extends AugmentedInterfaceElement, deprecated):
+ new (constructor: AugmentedMixinElement Function())
+ superclassConstraints (getter: List<InterfaceType>)
BindPatternVariableElement (class extends Object implements PatternVariableElement, deprecated):
new (constructor: BindPatternVariableElement Function())
ClassElement (class extends Object implements InterfaceElement, deprecated):
new (constructor: ClassElement Function())
+ augmented (getter: AugmentedClassElement, deprecated)
hasNonFinalField (getter: bool)
isAbstract (getter: bool)
isBase (getter: bool)
@@ -3268,6 +3312,7 @@
visitTypeParameterElement (method: R? Function(TypeParameterElement))
EnumElement (class extends Object implements InterfaceElement, deprecated):
new (constructor: EnumElement Function())
+ augmented (getter: AugmentedEnumElement, deprecated)
ExecutableElement (class extends Object implements FunctionTypedElement, deprecated):
new (constructor: ExecutableElement Function())
declaration (getter: ExecutableElement)
@@ -3286,6 +3331,7 @@
name (getter: String)
ExtensionElement (class extends Object implements InstanceElement, deprecated):
new (constructor: ExtensionElement Function())
+ augmented (getter: AugmentedExtensionElement, deprecated)
extendedType (getter: DartType)
getField (method: FieldElement? Function(String))
getGetter (method: PropertyAccessorElement? Function(String))
@@ -3293,6 +3339,7 @@
getSetter (method: PropertyAccessorElement? Function(String))
ExtensionTypeElement (class extends Object implements InterfaceElement, deprecated):
new (constructor: ExtensionTypeElement Function())
+ augmented (getter: AugmentedExtensionTypeElement, deprecated)
primaryConstructor (getter: ConstructorElement, deprecated)
representation (getter: FieldElement)
typeErasure (getter: DartType)
@@ -3332,6 +3379,7 @@
InstanceElement (class extends Object implements TypeDefiningElement, TypeParameterizedElement, deprecated):
new (constructor: InstanceElement Function())
accessors (getter: List<PropertyAccessorElement>)
+ augmented (getter: AugmentedInstanceElement, deprecated)
enclosingElement3 (getter: CompilationUnitElement, deprecated)
fields (getter: List<FieldElement>)
isAugmentation (getter: bool)
@@ -3340,6 +3388,7 @@
InterfaceElement (class extends Object implements InstanceElement, deprecated):
new (constructor: InterfaceElement Function())
allSupertypes (getter: List<InterfaceType>)
+ augmented (getter: AugmentedInterfaceElement, deprecated)
constructors (getter: List<ConstructorElement>, deprecated)
interfaces (getter: List<InterfaceType>)
mixins (getter: List<InterfaceType>, deprecated)
@@ -3425,6 +3474,7 @@
declaration (getter: MethodElement)
MixinElement (class extends Object implements InterfaceElement, deprecated):
new (constructor: MixinElement Function())
+ augmented (getter: AugmentedMixinElement, deprecated)
isBase (getter: bool)
superclassConstraints (getter: List<InterfaceType>)
isImplementableIn (method: bool Function(LibraryElement))
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 0b0b3a0..58321de 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -60,6 +60,186 @@
import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
+/// The result of applying augmentations to a [ClassElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+@Deprecated(elementModelDeprecationMsg)
+abstract class AugmentedClassElement implements AugmentedInterfaceElement {
+ @override
+ ClassElement get firstFragment;
+}
+
+/// The result of applying augmentations to an [EnumElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+@Deprecated(elementModelDeprecationMsg)
+abstract class AugmentedEnumElement implements AugmentedInterfaceElement {
+ /// The enum constants declared in this element.
+ List<FieldElement> get constants;
+
+ @override
+ EnumElement get firstFragment;
+}
+
+/// The result of applying augmentations to an [ExtensionElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+@Deprecated(elementModelDeprecationMsg)
+abstract class AugmentedExtensionElement implements AugmentedInstanceElement {
+ /// The type that is extended by this extension.
+ DartType get extendedType;
+}
+
+/// The result of applying augmentations to an [ExtensionTypeElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+@Deprecated(elementModelDeprecationMsg)
+abstract class AugmentedExtensionTypeElement
+ implements AugmentedInterfaceElement {
+ @override
+ ExtensionTypeElement get firstFragment;
+
+ /// The primary constructor of this extension.
+ ConstructorElement get primaryConstructor;
+
+ /// The representation of this extension.
+ FieldElement get representation;
+
+ /// The extension type erasure, obtained by recursively replacing every
+ /// subterm which is an extension type by the corresponding representation
+ /// type.
+ DartType get typeErasure;
+}
+
+/// The result of applying augmentations to a [InstanceElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+@Deprecated(elementModelDeprecationMsg)
+abstract class AugmentedInstanceElement {
+ /// The accessors (getters and setters) declared in this element.
+ ///
+ /// [PropertyAccessorElement]s replace corresponding elements,
+ /// other [PropertyAccessorElement]s are appended.
+ List<PropertyAccessorElement> get accessors;
+
+ /// The fields declared in this element.
+ ///
+ /// `FieldAugmentationElement`s replace corresponding elements, other
+ /// [FieldElement]s are appended.
+ List<FieldElement> get fields;
+
+ /// The declaration (not augmentation) that owns this result.
+ InstanceElement get firstFragment;
+
+ /// The metadata associated with this element.
+ ///
+ /// This is a union of annotations associated with the class declaration and
+ /// all its augmentations.
+ List<ElementAnnotation> get metadata;
+
+ /// The methods declared in this element.
+ ///
+ /// `MethodAugmentationElement`s replace corresponding elements, other
+ /// [MethodElement]s are appended.
+ List<MethodElement> get methods;
+
+ /// The type of `this` expression.
+ DartType get thisType;
+
+ /// Returns the field from [fields] that has the given [name].
+ FieldElement? getField(String name);
+
+ /// Returns the getter from [accessors] that has the given [name].
+ PropertyAccessorElement? getGetter(String name);
+
+ /// Returns the method from [methods] that has the given [name].
+ MethodElement? getMethod(String name);
+
+ /// Returns the setter from [accessors] that has the given [name].
+ PropertyAccessorElement? getSetter(String name);
+
+ /// Returns the element representing the getter that results from looking up
+ /// the given [name] in this class with respect to the given [library],
+ /// or `null` if the look up fails.
+ ///
+ /// The behavior of this method is defined by the Dart Language Specification
+ /// in section 17.18 Lookup.
+ PropertyAccessorElement? lookUpGetter({
+ required String name,
+ required LibraryElement library,
+ });
+
+ /// Returns the element representing the method that results from looking up
+ /// the given [name] in this class with respect to the given [library],
+ /// or `null` if the look up fails.
+ ///
+ /// The behavior of this method is defined by the Dart Language Specification
+ /// in section 17.18 Lookup.
+ MethodElement? lookUpMethod({
+ required String name,
+ required LibraryElement library,
+ });
+
+ /// Returns the element representing the setter that results from looking up
+ /// the given [name] in this class with respect to the given [library],
+ /// or `null` if the look up fails.
+ ///
+ /// The behavior of this method is defined by the Dart Language Specification
+ /// in section 17.18 Lookup.
+ PropertyAccessorElement? lookUpSetter({
+ required String name,
+ required LibraryElement library,
+ });
+}
+
+/// The result of applying augmentations to a [InterfaceElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+@Deprecated(elementModelDeprecationMsg)
+abstract class AugmentedInterfaceElement implements AugmentedInstanceElement {
+ /// The constructors declared in this element.
+ ///
+ /// `ConstructorAugmentationElement`s replace corresponding elements,
+ /// other [ConstructorElement]s are appended.
+ List<ConstructorElement> get constructors;
+
+ @override
+ InterfaceElement get firstFragment;
+
+ /// The interfaces implemented by this element.
+ ///
+ /// This is a union of interfaces declared by the class declaration and
+ /// all its augmentations.
+ List<InterfaceType> get interfaces;
+
+ /// The mixins applied by this class or in its augmentations.
+ ///
+ /// This is a union of mixins applied by the class declaration and all its
+ /// augmentations.
+ List<InterfaceType> get mixins;
+
+ @override
+ InterfaceType get thisType;
+
+ /// The unnamed constructor from [constructors].
+ ConstructorElement? get unnamedConstructor;
+
+ /// Returns the constructor from [constructors] that has the given [name].
+ ConstructorElement? getNamedConstructor(String name);
+}
+
+/// The result of applying augmentations to a [MixinElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+@Deprecated(elementModelDeprecationMsg)
+abstract class AugmentedMixinElement extends AugmentedInterfaceElement {
+ /// The superclass constraints of this element.
+ ///
+ /// This is a union of constraints declared by the class declaration and
+ /// all its augmentations.
+ List<InterfaceType> get superclassConstraints;
+}
+
/// A pattern variable that is explicitly declared.
///
/// Clients may not extend, implement or mix-in this class.
@@ -74,6 +254,10 @@
/// Clients may not extend, implement or mix-in this class.
@Deprecated('Use ClassElement2 instead')
abstract class ClassElement implements InterfaceElement {
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedClassElement get augmented;
+
/// Whether the class or its superclass declares a non-final instance field.
bool get hasNonFinalField;
@@ -1079,7 +1263,11 @@
///
/// Clients may not extend, implement or mix-in this class.
@Deprecated('Use EnumElement2 instead')
-abstract class EnumElement implements InterfaceElement {}
+abstract class EnumElement implements InterfaceElement {
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedEnumElement get augmented;
+}
/// An element representing an executable object, including functions, methods,
/// constructors, getters, and setters.
@@ -1150,6 +1338,10 @@
/// Clients may not extend, implement or mix-in this class.
@Deprecated('Use ExtensionElement2 instead')
abstract class ExtensionElement implements InstanceElement {
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedExtensionElement get augmented;
+
/// The type that is extended by this extension.
DartType get extendedType;
@@ -1179,6 +1371,10 @@
/// Clients may not extend, implement or mix-in this class.
@Deprecated('Use ExtensionTypeElement2 instead')
abstract class ExtensionTypeElement implements InterfaceElement {
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedExtensionTypeElement get augmented;
+
/// The primary constructor of this extension.
@Deprecated(elementModelDeprecationMsg)
ConstructorElement get primaryConstructor;
@@ -1320,6 +1516,13 @@
/// The declared accessors (getters and setters).
List<PropertyAccessorElement> get accessors;
+ /// The result of merging augmentations.
+ ///
+ /// It includes the members of the base element and its augmentations as
+ /// specified by the merge operations.
+ @Deprecated(elementModelDeprecationMsg)
+ AugmentedInstanceElement get augmented;
+
@Deprecated(elementModelDeprecationMsg)
@override
CompilationUnitElement get enclosingElement3;
@@ -1351,6 +1554,10 @@
/// This includes superclasses, mixins, interfaces, and superclass constraints.
List<InterfaceType> get allSupertypes;
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedInterfaceElement get augmented;
+
/// The declared constructors.
///
/// The list is empty for [MixinElement].
@@ -1838,6 +2045,10 @@
/// Clients may not extend, implement or mix-in this class.
@Deprecated('Use MixinElement2 instead')
abstract class MixinElement implements InterfaceElement {
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedMixinElement get augmented;
+
/// Whether the mixin is a base mixin.
///
/// A mixin is a base mixin if it has an explicit `base` modifier.
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index bd185ad..89b1815 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -89,6 +89,185 @@
}
}
+@Deprecated(elementModelDeprecationMsg)
+class AugmentedClassElementImpl extends AugmentedInterfaceElementImpl
+ implements AugmentedClassElement {
+ AugmentedClassElementImpl(super.firstFragment);
+
+ @override
+ ClassElementImpl get firstFragment {
+ return super.firstFragment as ClassElementImpl;
+ }
+}
+
+@Deprecated(elementModelDeprecationMsg)
+class AugmentedEnumElementImpl extends AugmentedInterfaceElementImpl
+ implements AugmentedEnumElement {
+ AugmentedEnumElementImpl(super.firstFragment);
+
+ @override
+ List<FieldElement> get constants => firstFragment.constants;
+
+ @override
+ EnumElementImpl get firstFragment {
+ return super.firstFragment as EnumElementImpl;
+ }
+}
+
+@Deprecated(elementModelDeprecationMsg)
+class AugmentedExtensionElementImpl extends AugmentedInstanceElementImpl
+ implements AugmentedExtensionElement {
+ AugmentedExtensionElementImpl(super.firstFragment);
+
+ @override
+ DartType get extendedType => firstFragment.extendedType;
+
+ @override
+ ExtensionElementImpl get firstFragment {
+ return super.firstFragment as ExtensionElementImpl;
+ }
+}
+
+@Deprecated(elementModelDeprecationMsg)
+class AugmentedExtensionTypeElementImpl extends AugmentedInterfaceElementImpl
+ implements AugmentedExtensionTypeElement {
+ AugmentedExtensionTypeElementImpl(super.firstFragment);
+
+ @override
+ ExtensionTypeElementImpl get firstFragment {
+ return super.firstFragment as ExtensionTypeElementImpl;
+ }
+
+ @override
+ ConstructorElement get primaryConstructor => firstFragment.primaryConstructor;
+
+ @override
+ FieldElement get representation => firstFragment.representation;
+
+ @override
+ DartType get typeErasure => firstFragment.typeErasure;
+}
+
+@Deprecated(elementModelDeprecationMsg)
+class AugmentedInstanceElementImpl implements AugmentedInstanceElement {
+ @override
+ final InstanceElementImpl firstFragment;
+
+ AugmentedInstanceElementImpl(this.firstFragment);
+
+ @override
+ List<PropertyAccessorElement> get accessors => firstFragment.accessors;
+
+ @override
+ List<FieldElement> get fields => firstFragment.fields;
+
+ @override
+ List<ElementAnnotation> get metadata => firstFragment.metadata;
+
+ @override
+ List<MethodElement> get methods => firstFragment.methods;
+
+ @override
+ DartType get thisType => firstFragment.thisType;
+
+ @override
+ FieldElement? getField(String name) {
+ return fields.firstWhereOrNull((e) => e.name == name);
+ }
+
+ @override
+ PropertyAccessorElement? getGetter(String name) {
+ return accessors
+ .where((e) => e.isGetter)
+ .firstWhereOrNull((e) => e.name == name);
+ }
+
+ @override
+ MethodElement? getMethod(String name) {
+ return methods.firstWhereOrNull((e) => e.name == name);
+ }
+
+ @override
+ PropertyAccessorElement? getSetter(String name) {
+ return accessors
+ .where((e) => e.isSetter)
+ .firstWhereOrNull((e) => e.name == name);
+ }
+
+ @override
+ PropertyAccessorElement? lookUpGetter(
+ {required String name, required LibraryElement library}) {
+ return firstFragment.element
+ .lookUpGetter2(name: name, library: library as LibraryElement2)
+ ?.asElement as PropertyAccessorElement?;
+ }
+
+ @override
+ MethodElement? lookUpMethod(
+ {required String name, required LibraryElement library}) {
+ return firstFragment.element
+ .lookUpMethod2(name: name, library: library as LibraryElement2)
+ ?.asElement;
+ }
+
+ @override
+ PropertyAccessorElement? lookUpSetter(
+ {required String name, required LibraryElement library}) {
+ return firstFragment.element
+ .lookUpSetter2(name: name, library: library as LibraryElement2)
+ ?.asElement as PropertyAccessorElement?;
+ }
+}
+
+@Deprecated(elementModelDeprecationMsg)
+class AugmentedInterfaceElementImpl extends AugmentedInstanceElementImpl
+ implements AugmentedInterfaceElement {
+ AugmentedInterfaceElementImpl(super.firstFragment);
+
+ @override
+ List<ConstructorElement> get constructors => firstFragment.constructors;
+
+ @override
+ InterfaceElementImpl get firstFragment {
+ return super.firstFragment as InterfaceElementImpl;
+ }
+
+ @override
+ List<InterfaceType> get interfaces => firstFragment.interfaces;
+
+ @override
+ List<InterfaceType> get mixins => firstFragment.mixins;
+
+ @override
+ InterfaceType get thisType {
+ return super.thisType as InterfaceType;
+ }
+
+ @override
+ ConstructorElement? get unnamedConstructor =>
+ firstFragment.unnamedConstructor;
+
+ @override
+ ConstructorElement? getNamedConstructor(String name) {
+ return constructors.firstWhereOrNull((e) => e.name == name);
+ }
+}
+
+@Deprecated(elementModelDeprecationMsg)
+class AugmentedMixinElementImpl extends AugmentedInterfaceElementImpl
+ implements AugmentedMixinElement {
+ AugmentedMixinElementImpl(super.firstFragment);
+
+ @override
+ MixinElementImpl get firstFragment {
+ return super.firstFragment as MixinElementImpl;
+ }
+
+ @override
+ List<InterfaceType> get superclassConstraints =>
+ firstFragment.superclassConstraints;
+}
+
class BindPatternVariableElementImpl extends PatternVariableElementImpl
implements
// ignore: deprecated_member_use_from_same_package,analyzer_use_new_elements
@@ -168,6 +347,10 @@
super.accessors = accessors;
}
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedClassElement get augmented => AugmentedClassElementImpl(this);
+
@override
set constructors(List<ConstructorElementImpl> constructors) {
assert(!isMixinApplication);
@@ -3550,6 +3733,10 @@
/// given [offset] in the file that contains the declaration of this element.
EnumElementImpl(super.name, super.offset);
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedEnumElement get augmented => AugmentedEnumElementImpl(this);
+
List<FieldElementImpl> get constants {
return fields.where((field) => field.isEnumConstant).toList();
}
@@ -3940,6 +4127,11 @@
/// element.
ExtensionElementImpl(super.name, super.nameOffset);
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedExtensionElement get augmented =>
+ AugmentedExtensionElementImpl(this);
+
@Deprecated('Use Element2 instead')
@override
List<Element> get children => [
@@ -4111,6 +4303,11 @@
ExtensionTypeElementImpl(super.name, super.nameOffset);
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedExtensionTypeElement get augmented =>
+ AugmentedExtensionTypeElementImpl(this);
+
@override
ExtensionTypeElementImpl2 get element {
linkedData?.read(this);
@@ -5707,6 +5904,10 @@
_accessors = accessors;
}
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedInstanceElement get augmented => AugmentedInstanceElementImpl(this);
+
@override
InstanceElementImpl2 get element;
@@ -6091,6 +6292,11 @@
library.session.classHierarchy.implementedInterfaces(element);
}
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedInterfaceElement get augmented =>
+ AugmentedInterfaceElementImpl(this);
+
@Deprecated('Use Element2 instead')
@override
List<Element> get children => [
@@ -8626,6 +8832,10 @@
/// given [offset] in the file that contains the declaration of this element.
MixinElementImpl(super.name, super.offset);
+ @Deprecated(elementModelDeprecationMsg)
+ @override
+ AugmentedMixinElement get augmented => AugmentedMixinElementImpl(this);
+
@override
MixinElementImpl2 get element {
linkedData?.read(this);
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 614adaf..aa24200 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -18,6 +18,7 @@
import 'package:analyzer/src/utilities/extensions/collection.dart';
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:analyzer/src/utilities/extensions/object.dart';
+import 'package:analyzer/src/utilities/extensions/string.dart';
import 'package:collection/collection.dart';
/// Returns a [List] of fixed length with given types.
@@ -951,8 +952,9 @@
@Deprecated('Use lookUpConstructor2() instead')
@override
ConstructorElementMixin? lookUpConstructor(
- String? constructorName, covariant LibraryElementImpl library) {
- return lookUpConstructor2(constructorName ?? 'new', library)?.asElement;
+ String? name, covariant LibraryElementImpl library) {
+ var name2 = (name ?? 'new').ifNotEmptyOrElse('new');
+ return lookUpConstructor2(name2, library)?.asElement;
}
@override
diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart
index d97e7e9..3c955b7 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/element.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart
@@ -382,6 +382,14 @@
}
extension FormalParameterElementExtension on FormalParameterElement {
+ @Deprecated(elementModelDeprecationMsg)
+ ParameterElement get asElement {
+ if (this case ParameterMember member) {
+ return member;
+ }
+ return firstFragment as ParameterElement;
+ }
+
void appendToWithoutDelimiters(
StringBuffer buffer, {
@Deprecated('Only non-nullable by default mode is supported')