Elements. Deprecate InterfaceTypeImpl.element
Change-Id: Iff7d90a8d614a6069ec7f13810c8bd6600cfcc1f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/418919
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index b358b26..d1ae6d3 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -3080,7 +3080,7 @@
new (constructor: DirectiveUri Function())
DirectiveUriWithLibrary (class extends DirectiveUriWithSource):
new (constructor: DirectiveUriWithLibrary Function())
- library (getter: LibraryElement)
+ library (getter: LibraryElement, deprecated)
library2 (getter: LibraryElement2)
DirectiveUriWithRelativeUri (class extends DirectiveUriWithRelativeUriString):
new (constructor: DirectiveUriWithRelativeUri Function())
@@ -3097,7 +3097,7 @@
unit (getter: CompilationUnitElement, deprecated)
Element (class extends Object implements AnalysisTarget):
new (constructor: Element Function())
- children (getter: List<Element>)
+ children (getter: List<Element>, deprecated)
context (getter: AnalysisContext@2)
declaration (getter: Element?)
displayName (getter: String)
@@ -3135,7 +3135,7 @@
isPublic (getter: bool)
isSynthetic (getter: bool)
kind (getter: ElementKind)
- library (getter: LibraryElement?)
+ library (getter: LibraryElement?, deprecated)
location (getter: ElementLocation?)
metadata (getter: List<ElementAnnotation>)
name (getter: String?)
@@ -3148,7 +3148,7 @@
accept (method: T? Function<T>(ElementVisitor<T>), deprecated)
getDisplayString (method: String Function({bool multiline, bool withNullability}))
getExtendedDisplayName (method: String Function(String?))
- isAccessibleIn (method: bool Function(LibraryElement))
+ isAccessibleIn (method: bool Function(LibraryElement), deprecated)
thisOrAncestorMatching (method: E? Function<E extends Element>(bool Function(Element)), deprecated)
thisOrAncestorMatching3 (method: E? Function<E extends Element>(bool Function(Element)), deprecated)
thisOrAncestorOfType (method: E? Function<E extends Element>(), deprecated)
@@ -3369,7 +3369,7 @@
new (constructor: LabelElement Function())
enclosingElement3 (getter: ExecutableElement, deprecated)
name (getter: String)
- LibraryElement (class extends Object implements _ExistingElement):
+ LibraryElement (class extends Object implements _ExistingElement, deprecated):
new (constructor: LibraryElement Function())
definingCompilationUnit (getter: CompilationUnitElement, deprecated)
enclosingElement3 (getter: Null)
@@ -3520,7 +3520,7 @@
new (constructor: TypeParameterizedElement Function())
isSimplyBounded (getter: bool)
typeParameters (getter: List<TypeParameterElement>, deprecated)
- UndefinedElement (class extends Object implements Element):
+ UndefinedElement (class extends Object implements Element, deprecated):
new (constructor: UndefinedElement Function())
UriReferencedElement (class extends Object implements _ExistingElement):
new (constructor: UriReferencedElement Function())
@@ -3541,7 +3541,7 @@
_ExistingElement (class extends Object implements Element):
new (constructor: _ExistingElement Function())
declaration (getter: Element)
- library (getter: LibraryElement)
+ library (getter: LibraryElement, deprecated)
librarySource (getter: Source)
source (getter: Source)
package:analyzer/dart/element/element2.dart:
@@ -5260,7 +5260,7 @@
new (constructor: ConstantEvaluationTarget Function())
context (getter: AnalysisContext@2)
isConstantEvaluated (getter: bool)
- library (getter: LibraryElement?)
+ library (getter: LibraryElement?, deprecated)
library2 (getter: LibraryElement2?)
package:analyzer/src/dart/resolver/scope.dart:
Namespace (class extends Object):
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index b36de84..dd1bbd6 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -22,6 +22,7 @@
/// children of the element representing the class.
///
/// Every complete element structure is rooted by an instance of the class
+// ignore:deprecated_member_use_from_same_package
/// [LibraryElement]. A library element represents a single Dart library. Every
/// library is defined by one or more compilation units (the library and all of
/// its parts). The compilation units are represented by the class
@@ -338,11 +339,12 @@
/// Clients may not extend, implement or mix-in this class.
abstract class DirectiveUri {}
-/// [DirectiveUriWithSource] that references a [LibraryElement].
+/// [DirectiveUriWithSource] that references a [LibraryElement2].
///
/// Clients may not extend, implement or mix-in this class.
abstract class DirectiveUriWithLibrary extends DirectiveUriWithSource {
/// The library referenced by the [source].
+ @Deprecated('Use library2 instead')
LibraryElement get library;
/// The library referenced by the [source].
@@ -414,6 +416,7 @@
/// A list of this element's children.
///
/// There is no guarantee of the order in which the children will be included.
+ @Deprecated('Use Element2 instead')
List<Element> get children;
/// The analysis context in which this element is defined.
@@ -566,6 +569,7 @@
/// This will be the element itself if it is a library element. This will be
/// `null` if this element is [MultiplyDefinedElement2] that is not contained
/// in a library.
+ @Deprecated('Use Element2 instead')
LibraryElement? get library;
/// The location of this element in the element model.
@@ -668,6 +672,7 @@
/// A declaration <i>m</i> is accessible to a library <i>L</i> if <i>m</i> is
/// declared in <i>L</i> or if <i>m</i> is public.
/// </blockquote>
+ @Deprecated('Use Element2 instead')
bool isAccessibleIn(LibraryElement library);
/// Returns either this element or the most immediate ancestor of this element
@@ -1648,6 +1653,7 @@
/// A library.
///
/// Clients may not extend, implement or mix-in this class.
+@Deprecated('Use LibraryElement2 instead')
abstract class LibraryElement implements _ExistingElement {
/// The compilation unit that defines this library.
@Deprecated(elementModelDeprecationMsg)
@@ -2304,6 +2310,7 @@
/// elements do not make sense and will return useless results.
///
/// Clients may not extend, implement or mix-in this class.
+@Deprecated('Not used anymore')
abstract class UndefinedElement implements Element {}
/// An element included into a library using some URI.
@@ -2382,6 +2389,7 @@
@override
Element get declaration;
+ @Deprecated('Use Element2 instead')
@override
LibraryElement get library;
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index e442855..5a3cf7b 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-// ignore_for_file: analyzer_use_new_elements
-
import 'dart:collection';
import 'package:_fe_analyzer_shared/src/base/analyzer_public_api.dart';
@@ -535,6 +533,7 @@
bool get isConstantEvaluated;
/// The library with this constant.
+ @Deprecated('Use library2 instead')
LibraryElement? get library;
/// The library with this constant.
@@ -3171,7 +3170,7 @@
var superclass = definingType.superclass;
if (superclass != null && !superclass.isDartCoreObject) {
var superConstructor = superclass
- .lookUpConstructor2(superName, _constructor.library.asElement2)
+ .lookUpConstructor2(superName, _constructor.library)
?.asElement;
if (superConstructor == null) {
return null;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 2fb2110..f40a949 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -188,34 +188,7 @@
@override
bool get hasNonFinalField {
- var classesToVisit = <InterfaceElementImpl>[];
- var visitedClasses = <InterfaceElementImpl>{};
- classesToVisit.add(this);
- while (classesToVisit.isNotEmpty) {
- var currentElement = classesToVisit.removeAt(0);
- if (visitedClasses.add(currentElement)) {
- // check fields
- for (var field in currentElement.fields) {
- if (!field.isFinal &&
- !field.isConst &&
- !field.isStatic &&
- !field.isSynthetic) {
- return true;
- }
- }
- // check mixins
- for (var mixinType in currentElement.mixins) {
- classesToVisit.add(mixinType.element);
- }
- // check super
- var supertype = currentElement.supertype;
- if (supertype != null) {
- classesToVisit.add(supertype.element);
- }
- }
- }
- // not found
- return false;
+ return element.hasNonFinalField;
}
@override
@@ -249,42 +222,6 @@
return name == 'Record' && library.isDartCore;
}
- bool get isEnumLike {
- // Must be a concrete class.
- if (isAbstract) {
- return false;
- }
-
- // With only private non-factory constructors.
- for (var constructor in constructors) {
- if (constructor.isPublic || constructor.isFactory) {
- return false;
- }
- }
-
- // With 2+ static const fields with the type of this class.
- var numberOfElements = 0;
- for (var field in fields) {
- if (field.isStatic && field.isConst && field.type == thisType) {
- numberOfElements++;
- }
- }
- if (numberOfElements < 2) {
- return false;
- }
-
- // No subclasses in the library.
- for (var unit in library.units) {
- for (var class_ in unit.classes) {
- if (class_.supertype?.element == this) {
- return false;
- }
- }
- }
-
- return true;
- }
-
@override
bool get isExhaustive => isSealed;
@@ -378,6 +315,7 @@
builder.writeClassElement(this);
}
+ @Deprecated('Use ClassElement2 instead')
@override
bool isExtendableIn(LibraryElement library) {
if (library == this.library) {
@@ -386,6 +324,7 @@
return !isInterface && !isFinal && !isSealed;
}
+ @Deprecated('Use ClassElement2 instead')
@override
bool isImplementableIn(LibraryElement library) {
if (library == this.library) {
@@ -394,6 +333,7 @@
return !isBase && !isFinal && !isSealed;
}
+ @Deprecated('Use ClassElement2 instead')
@override
bool isMixableIn(LibraryElement library) {
if (library == this.library) {
@@ -424,10 +364,11 @@
// Assign to break a possible infinite recursion during computing.
_constructors = const <ConstructorElementImpl>[];
- var superElement = superType.element as ClassElementImpl;
+ var superElement2 = superType.element3 as ClassElementImpl2;
+ var superElement = superElement2.firstFragment;
var constructorsToForward = superElement.constructors
- .where((constructor) => constructor.isAccessibleIn(library))
+ .where((constructor) => constructor.asElement2.isAccessibleIn2(library))
.where((constructor) => !constructor.isFactory);
// Figure out the type parameter substitution we need to perform in order
@@ -447,7 +388,7 @@
Substitution.fromPairs(superClassParameters, argumentTypes);
bool typeHasInstanceVariables(InterfaceTypeImpl type) =>
- type.element.fields.any((e) => !e.isSynthetic);
+ type.element3.fields2.any((e) => !e.isSynthetic);
// Now create an implicit constructor for every constructor found above,
// substituting type parameters as appropriate.
@@ -620,7 +561,37 @@
}
@override
- bool get hasNonFinalField => firstFragment.hasNonFinalField;
+ @override
+ bool get hasNonFinalField {
+ var classesToVisit = <InterfaceElementImpl2>[];
+ var visitedClasses = <InterfaceElementImpl2>{};
+ classesToVisit.add(this);
+ while (classesToVisit.isNotEmpty) {
+ var currentElement = classesToVisit.removeAt(0);
+ if (visitedClasses.add(currentElement)) {
+ // check fields
+ for (var field in currentElement.fields2) {
+ if (!field.isFinal &&
+ !field.isConst &&
+ !field.isStatic &&
+ !field.isSynthetic) {
+ return true;
+ }
+ }
+ // check mixins
+ for (var mixinType in currentElement.mixins) {
+ classesToVisit.add(mixinType.element3);
+ }
+ // check super
+ var supertype = currentElement.supertype;
+ if (supertype != null) {
+ classesToVisit.add(supertype.element3);
+ }
+ }
+ }
+ // not found
+ return false;
+ }
@override
bool get isAbstract => firstFragment.isAbstract;
@@ -702,16 +673,30 @@
}
@override
- bool isExtendableIn2(LibraryElement2 library) =>
- firstFragment.isExtendableIn(library as LibraryElement);
+ bool isExtendableIn2(LibraryElement2 library) {
+ if (library == library2) {
+ return true;
+ }
+ return !isInterface && !isFinal && !isSealed;
+ }
@override
- bool isImplementableIn2(LibraryElement2 library) =>
- firstFragment.isImplementableIn(library as LibraryElement);
+ bool isImplementableIn2(LibraryElement2 library) {
+ if (library == library2) {
+ return true;
+ }
+ return !isBase && !isFinal && !isSealed;
+ }
@override
- bool isMixableIn2(LibraryElement2 library) =>
- firstFragment.isMixableIn(library as LibraryElement);
+ bool isMixableIn2(LibraryElement2 library) {
+ if (library == library2) {
+ return true;
+ } else if (library2.featureSet.isEnabled(Feature.class_modifiers)) {
+ return isMixinClass && !isInterface && !isFinal && !isSealed;
+ }
+ return true;
+ }
}
abstract class ClassOrMixinElementImpl extends InterfaceElementImpl {
@@ -829,6 +814,7 @@
_accessors = accessors;
}
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => [
...super.children,
@@ -846,7 +832,19 @@
];
@override
- List<Fragment> get children3 => children.whereType<Fragment>().toList();
+ List<Fragment> get children3 {
+ return [
+ ...accessors,
+ ...classes,
+ ...enums,
+ ...extensions,
+ ...extensionTypes,
+ ...functions,
+ ...mixins,
+ ...typeAliases,
+ ...topLevelVariables,
+ ];
+ }
@override
List<ClassElementImpl> get classes {
@@ -2596,6 +2594,7 @@
reference?.element = this;
}
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => const [];
@@ -3117,6 +3116,7 @@
/// Return `true` if this element has the given [modifier] associated with it.
bool hasModifier(Modifier modifier) => _modifiers[modifier];
+ @Deprecated('Use Element2 instead')
@override
bool isAccessibleIn(LibraryElement library) {
if (Identifier.isPrivateName(name!)) {
@@ -3631,6 +3631,7 @@
/// [offset].
ExecutableElementImpl(String super.name, super.offset, {super.reference});
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => [
...super.children,
@@ -3639,6 +3640,12 @@
];
@override
+ List<Fragment> get children3 => [
+ ...typeParameters,
+ ...parameters,
+ ];
+
+ @override
ExecutableElementImpl get declaration => this;
@override
@@ -3878,6 +3885,7 @@
/// element.
ExtensionElementImpl(super.name, super.nameOffset);
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => [
...super.children,
@@ -3888,6 +3896,14 @@
];
@override
+ List<Fragment> get children3 => [
+ ...accessors,
+ ...fields,
+ ...methods,
+ ...typeParameters,
+ ];
+
+ @override
String get displayName => name ?? '';
@override
@@ -5241,6 +5257,7 @@
GenericFunctionTypeElementImpl.forOffset(int nameOffset)
: super("", nameOffset);
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => [
...super.children,
@@ -5249,6 +5266,12 @@
];
@override
+ List<Fragment> get children3 => [
+ ...typeParameters,
+ ...parameters,
+ ];
+
+ @override
GenericFunctionTypeElementImpl2 get element => _element2;
@override
@@ -5811,8 +5834,13 @@
}
@override
- bool isAccessibleIn2(LibraryElement2 library) =>
- firstFragment.isAccessibleIn(library as LibraryElement);
+ bool isAccessibleIn2(LibraryElement2 library) {
+ var name = name3;
+ if (name != null && Identifier.isPrivateName(name)) {
+ return library == library2;
+ }
+ return true;
+ }
@override
GetterElement? lookUpGetter2({
@@ -5986,6 +6014,7 @@
library.session.classHierarchy.implementedInterfaces(element);
}
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => [
...super.children,
@@ -5997,6 +6026,15 @@
];
@override
+ List<Fragment> get children3 => [
+ ...accessors,
+ ...fields,
+ ...constructors,
+ ...methods,
+ ...typeParameters,
+ ];
+
+ @override
List<ConstructorElementImpl> get constructors {
if (!identical(_constructors, _Sentinel.constructorElement)) {
return _constructors;
@@ -6931,10 +6969,14 @@
void visitChildren2<T>(ElementVisitor2<T> visitor) {}
}
-/// A concrete implementation of a [LibraryElement] or [LibraryElement2].
+/// A concrete implementation of [LibraryElement2].
class LibraryElementImpl extends ElementImpl
- with _HasLibraryMixin
- implements LibraryElement, LibraryElement2 {
+ with
+ _HasLibraryMixin
+ implements
+ // ignore:deprecated_member_use_from_same_package
+ LibraryElement,
+ LibraryElement2 {
/// The analysis context in which this library is defined.
@override
final AnalysisContext context;
@@ -7031,6 +7073,7 @@
@override
LibraryElementImpl get baseElement => this;
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => [
definingCompilationUnit,
@@ -8561,6 +8604,7 @@
builder.writeMixinElement(this);
}
+ @Deprecated('Use MixinElement2 instead')
@override
bool isImplementableIn(LibraryElement library) {
if (library == this.library) {
@@ -8609,8 +8653,12 @@
}
@override
- bool isImplementableIn2(LibraryElement2 library) =>
- firstFragment.isImplementableIn(library as LibraryElement);
+ bool isImplementableIn2(LibraryElement2 library) {
+ if (library == library2) {
+ return true;
+ }
+ return !isBase;
+ }
}
/// The constants for all of the modifiers defined by the Dart language and for
@@ -8737,10 +8785,8 @@
SYNTHETIC
}
-class MultiplyDefinedElementImpl
- implements
- // ignore:deprecated_member_use_from_same_package
- MultiplyDefinedElement {
+@Deprecated('Use MultiplyDefinedElement2 instead')
+class MultiplyDefinedElementImpl implements MultiplyDefinedElement {
/// The unique integer identifier of this element.
@override
final int id = ElementImpl._NEXT_ID++;
@@ -8762,6 +8808,7 @@
this.conflictingElements,
);
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => const [];
@@ -9024,14 +9071,6 @@
this.conflictingElements2,
);
- MultiplyDefinedElementImpl get asElement {
- return MultiplyDefinedElementImpl(
- libraryFragment,
- name3,
- conflictingElements2.map((e) => e.asElement).nonNulls.toList(),
- );
- }
-
@override
MultiplyDefinedElementImpl2 get baseElement => this;
@@ -9387,6 +9426,7 @@
return element;
}
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => parameters;
@@ -11088,6 +11128,9 @@
TypeImpl? get aliasedTypeRaw => _aliasedType;
@override
+ List<Fragment> get children3 => const [];
+
+ @override
String get displayName => name;
@override
@@ -11241,15 +11284,15 @@
return false;
}
var typeParameters = typeParameters2;
- var aliasedClass = aliasedType_.element;
+ var aliasedClass = aliasedType_.element3;
var typeArguments = aliasedType_.typeArguments;
var typeParameterCount = typeParameters.length;
- if (typeParameterCount != aliasedClass.typeParameters.length) {
+ if (typeParameterCount != aliasedClass.typeParameters2.length) {
return false;
}
for (var i = 0; i < typeParameterCount; i++) {
var bound = typeParameters[i].bound ?? DynamicTypeImpl.instance;
- var aliasedBound = aliasedClass.typeParameters[i].bound ??
+ var aliasedBound = aliasedClass.typeParameters2[i].bound ??
library2.typeProvider.dynamicType;
if (!library2.typeSystem.isSubtypeOf(bound, aliasedBound) ||
!library2.typeSystem.isSubtypeOf(aliasedBound, bound)) {
@@ -11679,9 +11722,6 @@
List<TypeParameterElementImpl> _typeParameters = const [];
@override
- List<Fragment> get children3 => children.whereType<Fragment>().toList();
-
- @override
bool get isSimplyBounded => true;
@override
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index a1af92d..cde8354 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -228,12 +228,17 @@
required this.typeParameters,
});
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => parameters;
@override
- List<Element2> get children2 =>
- children.map((fragment) => fragment.asElement2).nonNulls.toList();
+ List<Element2> get children2 {
+ return [
+ ...typeParameters2,
+ ...formalParameters,
+ ];
+ }
@override
ExecutableElementImpl get declaration =>
@@ -292,6 +297,7 @@
@override
bool get isSynchronous => declaration.isSynchronous;
+ @Deprecated('Use ExecutableElement2 instead')
@override
LibraryElement get library => _declaration.library!;
@@ -507,8 +513,7 @@
FieldElement2 get baseElement => _element2;
@override
- List<Element2> get children2 =>
- children.map((fragment) => fragment.asElement2).nonNulls.toList();
+ List<Element2> get children2 => const [];
@override
ConstantInitializer? get constantInitializer2 {
@@ -586,6 +591,7 @@
@override
bool get isPromotable => declaration.isPromotable;
+ @Deprecated('Use FieldElement2 instead')
@override
LibraryElement get library => _declaration.library!;
@@ -800,6 +806,7 @@
Element2 get baseElement;
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => const [];
@@ -914,6 +921,7 @@
@override
ElementKind get kind => _declaration.kind;
+ @Deprecated('Use Element2 instead')
@override
LibraryElement? get library => _declaration.library;
@@ -976,6 +984,7 @@
);
}
+ @Deprecated('Use Element2 instead')
@override
bool isAccessibleIn(LibraryElement library) =>
_declaration.isAccessibleIn(library);
@@ -1151,12 +1160,17 @@
@override
FormalParameterElement get baseElement => _element2;
+ @Deprecated('Use Element2 instead')
@override
List<Element> get children => parameters;
@override
- List<Element2> get children2 =>
- children.map((fragment) => fragment.asElement2).nonNulls.toList();
+ List<Element2> get children2 {
+ return [
+ ...typeParameters2,
+ ...formalParameters,
+ ];
+ }
@override
ConstantInitializer? get constantInitializer2 {
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index a57043e..614adaf 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -672,6 +672,7 @@
}).toFixedList();
}
+ @Deprecated('Use element3 instead')
@override
InterfaceElementImpl get element => element3.asElement;
@@ -977,14 +978,14 @@
@override
PropertyAccessorElement? lookUpGetter2(
String name,
- LibraryElement library, {
+ covariant LibraryElementImpl library, {
bool concrete = false,
bool inherited = false,
bool recoveryStatic = false,
}) {
return lookUpGetter3(
name,
- library.asElement2,
+ library,
concrete: concrete,
inherited: inherited,
recoveryStatic: recoveryStatic,
@@ -1033,14 +1034,14 @@
@override
MethodElementOrMember? lookUpMethod2(
String name,
- LibraryElement library, {
+ covariant LibraryElementImpl library, {
bool concrete = false,
bool inherited = false,
bool recoveryStatic = false,
}) {
return lookUpMethod3(
name,
- library.asElement2,
+ library,
concrete: concrete,
inherited: inherited,
recoveryStatic: recoveryStatic,
@@ -1089,14 +1090,14 @@
@override
PropertyAccessorElement? lookUpSetter2(
String name,
- LibraryElement library, {
+ covariant LibraryElementImpl library, {
bool concrete = false,
bool inherited = false,
bool recoveryStatic = false,
}) {
return lookUpSetter3(
name,
- library.asElement2,
+ library,
concrete: concrete,
inherited: inherited,
recoveryStatic: recoveryStatic,
diff --git a/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart b/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart
index 5acc0e3..9261d4d 100644
--- a/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart
+++ b/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart
@@ -489,7 +489,8 @@
if (superType != null) {
var index = classElement.constructors.indexOf(constructor);
var superConstructors = superType.elementImpl.constructors
- .where((element) => element.isAccessibleIn(classElement.library))
+ .where((element) =>
+ element.asElement2.isAccessibleIn2(classElement.library))
.toList();
if (index < superConstructors.length) {
var baseConstructor = superConstructors[index];
diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart
index d9aa290..2cd7b7c 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/element.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart
@@ -285,12 +285,6 @@
return self;
} else if (self is LocalVariableElementImpl) {
return self.element;
- } else if (self is MultiplyDefinedElementImpl) {
- return MultiplyDefinedElementImpl2(
- self.libraryFragment,
- self.name,
- self.conflictingElements.map((e) => e.asElement2).nonNulls.toList(),
- );
} else if (self is NeverElementImpl) {
return NeverElementImpl2.instance;
} else if (self is ParameterMember) {
@@ -452,7 +446,7 @@
}
extension InterfaceTypeImplExtension on InterfaceTypeImpl {
- InterfaceElementImpl get elementImpl => element;
+ InterfaceElementImpl get elementImpl => element3.firstFragment;
}
extension JoinPatternVariableElementImplExtension
@@ -463,23 +457,19 @@
}
extension LibraryElement2Extension on LibraryElement2 {
+ @Deprecated('Use LibraryElement2 instead')
LibraryElement get asElement {
return this as LibraryElement;
}
}
+@Deprecated('Use LibraryElement2 instead')
extension LibraryElementExtension on LibraryElement {
LibraryElement2 get asElement2 {
return this as LibraryElement2;
}
}
-extension LibraryElementOrNullExtension on LibraryElement? {
- LibraryElement2? get asElement2 {
- return this as LibraryElement2?;
- }
-}
-
extension LibraryFragmentExtension on LibraryFragment {
/// Returns a list containing this library fragment and all of its enclosing
/// fragments.
diff --git a/pkg/linter/test/rules/analyzer_use_new_elements_test.dart b/pkg/linter/test/rules/analyzer_use_new_elements_test.dart
index 308ebe9..1113a73 100644
--- a/pkg/linter/test/rules/analyzer_use_new_elements_test.dart
+++ b/pkg/linter/test/rules/analyzer_use_new_elements_test.dart
@@ -64,7 +64,7 @@
type.element;
}
''',
- [lint(95, 7)],
+ [error(HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE, 95, 7), lint(95, 7)],
);
}