Elements. Deprecate ExecutableElement.

Change-Id: Ic66c9df46bfcfe93d2e6bd93315e298eee694533
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/418831
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov
2025-03-31 17:29:16 -07:00
parent b18ffd3c43
commit fdc469778c
5 changed files with 15 additions and 35 deletions
+2 -2
View File
@@ -3268,7 +3268,7 @@ package:analyzer/dart/element/element.dart:
visitTypeParameterElement (method: R? Function(TypeParameterElement))
EnumElement (class extends Object implements InterfaceElement, deprecated):
new (constructor: EnumElement Function())
ExecutableElement (class extends Object implements FunctionTypedElement):
ExecutableElement (class extends Object implements FunctionTypedElement, deprecated):
new (constructor: ExecutableElement Function())
declaration (getter: ExecutableElement)
displayName (getter: String)
@@ -3367,7 +3367,7 @@ package:analyzer/dart/element/element.dart:
variables (getter: List<PatternVariableElement>)
LabelElement (class extends Object implements Element):
new (constructor: LabelElement Function())
enclosingElement3 (getter: ExecutableElement)
enclosingElement3 (getter: ExecutableElement, deprecated)
name (getter: String)
LibraryElement (class extends Object implements _ExistingElement):
new (constructor: LibraryElement Function())
@@ -1096,6 +1096,7 @@ abstract class EnumElement implements InterfaceElement {}
/// constructors, getters, and setters.
///
/// Clients may not extend, implement or mix-in this class.
@Deprecated('Use ExecutableElement2 instead')
abstract class ExecutableElement implements FunctionTypedElement {
@override
ExecutableElement get declaration;
@@ -1631,6 +1632,7 @@ abstract class JoinPatternVariableElement implements PatternVariableElement {
///
/// Clients may not extend, implement or mix-in this class.
abstract class LabelElement implements Element {
@Deprecated(elementModelDeprecationMsg)
@override
ExecutableElement get enclosingElement3;
@@ -1807,6 +1809,7 @@ class LibraryLanguageVersion {
}
/// An element that can be (but is not required to be) defined within a method
// ignore:deprecated_member_use_from_same_package
/// or function (an [ExecutableElement]).
///
/// Clients may not extend, implement or mix-in this class.
@@ -3610,7 +3610,6 @@ abstract class ExecutableElement2OrMember implements ExecutableElement2 {
FunctionTypeImpl get type;
}
/// A base class for concrete implementations of an [ExecutableElement].
abstract class ExecutableElementImpl extends _ExistingElementImpl
with AugmentableFragment, TypeParameterizedElementMixin
implements ExecutableElementOrMember, ExecutableFragment {
@@ -3849,7 +3848,10 @@ abstract class ExecutableElementImpl2 extends FunctionTypedElementImpl2
/// Common base class for all analyzer-internal classes that implement
/// `ExecutableElement`.
abstract class ExecutableElementOrMember
implements ExecutableElement, ElementOrMember {
implements
// ignore:deprecated_member_use_from_same_package
ExecutableElement,
ElementOrMember {
@override
List<ParameterElementMixin> get parameters;
@@ -7771,7 +7773,7 @@ class LocalFunctionFragmentImpl extends FunctionElementImpl
@override
bool get _includeNameOffsetInIdentifier {
return super._includeNameOffsetInIdentifier ||
enclosingElement3 is ExecutableElement ||
enclosingElement3 is ExecutableFragment ||
enclosingElement3 is VariableElement;
}
}
@@ -8668,7 +8670,7 @@ enum Modifier {
HAS_SINCE_SDK_VERSION_VALUE,
/// Indicates that the associated element did not have an explicit type
/// associated with it. If the element is an [ExecutableElement], then the
/// associated with it. If the element is an [ExecutableElement2], then the
/// type being referred to is the return type.
IMPLICIT_TYPE,
@@ -170,7 +170,7 @@ class InheritanceManager3 {
@experimental
ExecutableElement2? getInherited3(InterfaceType type, Name name) {
var element = getInherited(type, name);
return element.asElement2;
return element?.asElement2;
}
/// Returns the most specific signature of the member with the given [name]
@@ -323,28 +323,6 @@ extension ExecutableElement2Extension on ExecutableElement2 {
}
}
extension ExecutableElement2OrNullExtension on ExecutableElement2? {
ExecutableElement? get asElement {
return this?.asElement;
}
}
extension ExecutableElementExtension on ExecutableElement {
ExecutableElement2OrMember get asElement2 {
return switch (this) {
ExecutableFragment(:var element) => element,
ExecutableMember member => member,
_ => throw UnsupportedError('Unsupported type: $runtimeType'),
}
// TODO(paulberry): eliminate this cast by using impl types in the
// switch patterns above.
as ExecutableElement2OrMember;
}
ExecutableElementImpl get declarationImpl =>
declaration as ExecutableElementImpl;
}
extension ExecutableElementImpl2Extension on ExecutableElementImpl2 {
ExecutableElementImpl get asElement {
return lastFragment;
@@ -366,13 +344,10 @@ extension ExecutableElementOrMemberExtension on ExecutableElementOrMember {
};
}
ElementImpl get enclosingElementImpl => enclosingElement3 as ElementImpl;
}
ExecutableElementImpl get declarationImpl =>
declaration as ExecutableElementImpl;
extension ExecutableElementOrNullExtension on ExecutableElement? {
ExecutableElement2? get asElement2 {
return this?.asElement2;
}
ElementImpl get enclosingElementImpl => enclosingElement3 as ElementImpl;
}
extension ExtensionElementImpl2Extension on ExtensionElementImpl2 {