Elements. Use TypeParameterElementImpl in TypeParameterizedElementMixin.
Change-Id: Ic2617976c1099cd89ba73a81eee7c460bec79fd7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/403906
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 11da360..c681c9e 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -5598,7 +5598,7 @@
@override
List<TypeParameterElementImpl2> get typeParameters2 =>
firstFragment.typeParameters
- .map((fragment) => (fragment as TypeParameterElementImpl).element)
+ .map((fragment) => fragment.element)
.toList();
@override
@@ -11035,7 +11035,7 @@
_ExistingElementImpl,
TypeParameterizedElement,
TypeParameterizedFragment {
- List<TypeParameterElement> _typeParameters = const [];
+ List<TypeParameterElementImpl> _typeParameters = const [];
@override
List<Fragment> get children3 => children.whereType<Fragment>().toList();
@@ -11049,14 +11049,14 @@
ElementLinkedData? get linkedData;
@override
- List<TypeParameterElement> get typeParameters {
+ List<TypeParameterElementImpl> get typeParameters {
linkedData?.read(this);
return _typeParameters;
}
- set typeParameters(List<TypeParameterElement> typeParameters) {
+ set typeParameters(List<TypeParameterElementImpl> typeParameters) {
for (var typeParameter in typeParameters) {
- (typeParameter as TypeParameterElementImpl).enclosingElement3 = this;
+ typeParameter.enclosingElement3 = this;
}
_typeParameters = typeParameters;
}
diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart
index c3a94dd..9f3c044 100644
--- a/pkg/analyzer/lib/src/dart/element/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/element/extensions.dart
@@ -286,3 +286,9 @@
return null;
}
}
+
+extension TypeParameterElementImplExtension on TypeParameterElementImpl {
+ bool get isWildcardVariable {
+ return name == '_' && library.hasWildcardVariablesFeatureEnabled;
+ }
+}
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 76e0d47..ce205c8 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -1068,7 +1068,7 @@
result.isSynthetic = true;
result.parameters = transformedParameters;
result.returnType = executable.returnType;
- result.typeParameters = executable.typeParameters;
+ result.typeParameters = executable.typeParameters.cast();
return result;
}
@@ -1138,7 +1138,7 @@
var result = MethodElementImpl(firstMethod.name, -1);
result.enclosingElement3 = targetClass;
result.name2 = fragmentName;
- result.typeParameters = resultType.typeFormals;
+ result.typeParameters = resultType.typeFormals.cast();
result.returnType = resultType.returnType;
result.parameters = resultType.parameters.toImpl();
result.element = MethodElementImpl2(
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index 93a7047..b3ec701 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -64,7 +64,7 @@
static ClassElementImpl classElement3({
required String name,
- List<TypeParameterElement>? typeParameters,
+ List<TypeParameterElementImpl>? typeParameters,
List<String> typeParameterNames = const [],
InterfaceType? supertype,
List<InterfaceType> mixins = const [],
@@ -246,7 +246,7 @@
static MixinElementImpl mixinElement(
{required String name,
- List<TypeParameterElement>? typeParameters,
+ List<TypeParameterElementImpl>? typeParameters,
List<String> typeParameterNames = const [],
List<InterfaceType> constraints = const [],
List<InterfaceType> interfaces = const [],
@@ -352,7 +352,7 @@
return TypeParameterElementImpl(name, 0);
}
- static List<TypeParameterElement> typeParameters(List<String> names) {
+ static List<TypeParameterElementImpl> typeParameters(List<String> names) {
return names.map((name) => typeParameterWithType(name)).toList();
}
diff --git a/pkg/analyzer/lib/src/summary2/variance_builder.dart b/pkg/analyzer/lib/src/summary2/variance_builder.dart
index 810b6e1..0158734 100644
--- a/pkg/analyzer/lib/src/summary2/variance_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/variance_builder.dart
@@ -86,7 +86,7 @@
if (arguments.isNotEmpty) {
var parameters = element.typeParameters;
for (var i = 0; i < arguments.length && i < parameters.length; i++) {
- var parameter = parameters[i] as TypeParameterElementImpl;
+ var parameter = parameters[i];
var parameterVariance = parameter.variance;
result = result.meet(
parameterVariance.combine(
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
index fe7c916..0fd4bfe 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
@@ -623,7 +623,7 @@
_coreUnit.encloseElement(objectElement);
objectElement.interfaces = const <InterfaceType>[];
objectElement.mixins = const <InterfaceType>[];
- objectElement.typeParameters = const <TypeParameterElement>[];
+ objectElement.typeParameters = const <TypeParameterElementImpl>[];
objectElement.constructors = [
_constructor(isConst: true),
];
@@ -974,7 +974,7 @@
ClassElementImpl _class({
required String name,
bool isAbstract = false,
- List<TypeParameterElement> typeParameters = const [],
+ List<TypeParameterElementImpl> typeParameters = const [],
required CompilationUnitElementImpl unit,
}) {
var element = ClassElementImpl(name, 0);
@@ -1013,7 +1013,7 @@
FunctionElementImpl _function(
String name,
DartType returnType, {
- List<TypeParameterElement> typeFormals = const [],
+ List<TypeParameterElementImpl> typeFormals = const [],
List<ParameterElementImpl> parameters = const [],
}) {
return FunctionElementImpl(name, 0)
@@ -1070,7 +1070,7 @@
MethodElementImpl _method(
String name,
DartType returnType, {
- List<TypeParameterElement> typeFormals = const [],
+ List<TypeParameterElementImpl> typeFormals = const [],
List<ParameterElementImpl> parameters = const [],
}) {
return MethodElementImpl(name, 0)
diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart
index 5ae303b..1a45519 100644
--- a/pkg/analyzer/test/generated/elements_types_mixin.dart
+++ b/pkg/analyzer/test/generated/elements_types_mixin.dart
@@ -123,7 +123,7 @@
bool isAugmentation = false,
bool isSealed = false,
InterfaceType? superType,
- List<TypeParameterElement> typeParameters = const [],
+ List<TypeParameterElementImpl> typeParameters = const [],
List<InterfaceType> interfaces = const [],
List<InterfaceType> mixins = const [],
List<MethodElementImpl> methods = const [],
@@ -186,7 +186,7 @@
required DartType extendedType,
String? name,
bool isAugmentation = false,
- List<TypeParameterElement> typeParameters = const [],
+ List<TypeParameterElementImpl> typeParameters = const [],
List<MethodElementImpl> methods = const [],
}) {
var element = ExtensionElementImpl(name, 0);
@@ -203,7 +203,7 @@
String name, {
String representationName = 'it',
required DartType representationType,
- List<TypeParameterElement> typeParameters = const [],
+ List<TypeParameterElementImpl> typeParameters = const [],
List<InterfaceType> interfaces = const [],
}) {
var fragment = ExtensionTypeElementImpl(name, -1);
@@ -401,7 +401,7 @@
String name,
DartType returnType, {
bool isStatic = false,
- List<TypeParameterElement> typeFormals = const [],
+ List<TypeParameterElementImpl> typeFormals = const [],
List<ParameterElementImpl> parameters = const [],
}) {
return MethodElementImpl(name, 0)
@@ -414,7 +414,7 @@
MixinElementImpl mixin_({
required String name,
bool isAugmentation = false,
- List<TypeParameterElement> typeParameters = const [],
+ List<TypeParameterElementImpl> typeParameters = const [],
List<InterfaceType>? constraints,
List<InterfaceType> interfaces = const [],
}) {
@@ -575,7 +575,7 @@
TypeAliasElementImpl typeAlias({
required String name,
- required List<TypeParameterElement> typeParameters,
+ required List<TypeParameterElementImpl> typeParameters,
required DartType aliasedType,
}) {
var element = TypeAliasElementImpl(name, 0);