From 007bd5d6c01f08b945943e833d2e536693c16d3f Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Tue, 1 Apr 2025 09:18:01 -0700 Subject: [PATCH] Elements. Deprecate TypeParameterElement. Change-Id: I2f4c22fb4928cb5f296a190d7c165a3887d9eeae Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/418833 Commit-Queue: Konstantin Shcheglov Reviewed-by: Paul Berry --- pkg/analyzer/api.txt | 6 +++--- pkg/analyzer/lib/dart/element/element.dart | 3 +++ pkg/analyzer/lib/src/dart/element/element.dart | 8 +++++--- pkg/analyzer/lib/src/utilities/extensions/element.dart | 10 ---------- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt index 0ab97efec2b..4e96d9e83a3 100644 --- a/pkg/analyzer/api.txt +++ b/pkg/analyzer/api.txt @@ -3454,7 +3454,7 @@ package:analyzer/dart/element/element.dart: name (getter: String) parameterKind (getter: ParameterKind, deprecated) parameters (getter: List) - typeParameters (getter: List) + typeParameters (getter: List, deprecated) appendToWithoutDelimiters (method: void Function(StringBuffer, {bool withNullability})) PartElement (class extends Object implements _ExistingElement): new (constructor: PartElement Function()) @@ -3509,7 +3509,7 @@ package:analyzer/dart/element/element.dart: instantiate (method: DartType Function({required NullabilitySuffix nullabilitySuffix, required List typeArguments})) TypeDefiningElement (class extends Object implements Element): new (constructor: TypeDefiningElement Function()) - TypeParameterElement (class extends Object implements TypeDefiningElement): + TypeParameterElement (class extends Object implements TypeDefiningElement, deprecated): new (constructor: TypeParameterElement Function()) bound (getter: DartType?) declaration (getter: TypeParameterElement) @@ -3519,7 +3519,7 @@ package:analyzer/dart/element/element.dart: TypeParameterizedElement (class extends Object implements _ExistingElement): new (constructor: TypeParameterizedElement Function()) isSimplyBounded (getter: bool) - typeParameters (getter: List) + typeParameters (getter: List, deprecated) UndefinedElement (class extends Object implements Element): new (constructor: UndefinedElement Function()) UriReferencedElement (class extends Object implements _ExistingElement): diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart index 489fb96ac81..e1a244bbb51 100644 --- a/pkg/analyzer/lib/dart/element/element.dart +++ b/pkg/analyzer/lib/dart/element/element.dart @@ -1984,6 +1984,7 @@ abstract class ParameterElement /// /// A parameter will only define type parameters if it is a function typed /// parameter. + @Deprecated(elementModelDeprecationMsg) List get typeParameters; /// Appends the type, name and possibly the default value of this parameter @@ -2239,6 +2240,7 @@ abstract class TypeDefiningElement implements Element {} /// A type parameter. /// /// Clients may not extend, implement or mix-in this class. +@Deprecated('Use TypeParameterElement2 instead') abstract class TypeParameterElement implements TypeDefiningElement { /// The type representing the bound associated with this parameter, or `null` /// if this parameter does not have an explicit bound. Being able to @@ -2278,6 +2280,7 @@ abstract class TypeParameterizedElement implements _ExistingElement { /// /// This does not include type parameters that are declared by any enclosing /// elements. + @Deprecated(elementModelDeprecationMsg) List get typeParameters; } diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 2bacb485f71..5f923473025 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart @@ -3298,7 +3298,7 @@ abstract class ElementImpl2 implements Element2 { /// The reference of this element, used during reading summaries. /// /// Can be `null` if this element cannot be referenced from outside, - /// for example a [LocalFunctionElement], a [TypeParameterElement], + /// for example a [LocalFunctionElement], a [TypeParameterElement2], /// a positional [FormalParameterElement], etc. Reference? get reference => null; @@ -11343,9 +11343,11 @@ class TypeAliasElementImpl2 extends TypeDefiningElementImpl2 abstract class TypeDefiningElementImpl2 extends ElementImpl2 implements TypeDefiningElement2 {} -/// A concrete implementation of a [TypeParameterElement]. class TypeParameterElementImpl extends ElementImpl - implements TypeParameterElement, TypeParameterFragment { + implements + // ignore:deprecated_member_use_from_same_package + TypeParameterElement, + TypeParameterFragment { @override String? name2; diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart index f347568b32c..3769d6c85cc 100644 --- a/pkg/analyzer/lib/src/utilities/extensions/element.dart +++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart @@ -702,10 +702,6 @@ extension TypeAliasElementImplExtension on TypeAliasElementImpl { } extension TypeParameterElement2Extension on TypeParameterElement2 { - TypeParameterElement get asElement { - return firstFragment as TypeParameterElement; - } - TypeParameterElementImpl2 freshCopy() { var fragment = TypeParameterElementImpl( name3 ?? '', @@ -719,12 +715,6 @@ extension TypeParameterElement2Extension on TypeParameterElement2 { } } -extension TypeParameterElementExtension on TypeParameterElement { - TypeParameterElement2 get asElement2 { - return (this as TypeParameterElementImpl).asElement2; - } -} - extension TypeParameterElementImpl2Extension on TypeParameterElementImpl2 { TypeParameterElementImpl get asElement { return firstFragment;