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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user