diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 18ea7c824e3b..4b00ef1c788a 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart @@ -3679,8 +3679,7 @@ abstract class ExecutableElementImpl extends _ExistingElementImpl } @override - List get formalParameters => - parameters.cast(); + List get formalParameters => parameters; @override bool get hasImplicitReturnType { diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart index dc912c8d4e24..fa396172ea27 100644 --- a/pkg/analyzer/lib/src/dart/element/extensions.dart +++ b/pkg/analyzer/lib/src/dart/element/extensions.dart @@ -205,17 +205,6 @@ extension LibraryExtension2 on LibraryElement2? { this?.featureSet.isEnabled(Feature.wildcard_variables) ?? false; } -extension ListOfParameterElementExtension on List { - /// Returns `this` as `List`, converting if it isn't - /// one already. - List toImpl() { - return switch (this) { - List already => already, - _ => [for (var p in this) p.toImpl()], - }; - } -} - extension ParameterElementExtension on ParameterElement { /// Return [ParameterElement] with the specified properties replaced. ParameterElementImpl copyWith({ diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart index 52b616bee6ca..c4b87a4eb81e 100644 --- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart +++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart @@ -1142,7 +1142,11 @@ class InheritanceManager3 { result.name2 = fragmentName; result.typeParameters = resultType.typeFormals.cast(); result.returnType = resultType.returnType; - result.parameters = resultType.parameters.toImpl(); + // `resultType` is guaranteed to have been produced by + // `TypeSystemImpl.topMerge`; when that function merges function types, it + // always produces a `FunctionType` whose parameter list is a + // `List`. + result.parameters = resultType.parameters as List; result.element = MethodElementImpl2( Reference.root(), // TODO(scheglov): wrong firstMethod.name, @@ -1160,7 +1164,11 @@ class InheritanceManager3 { result.isGetter = firstAccessor.isGetter; result.isSetter = firstAccessor.isSetter; result.returnType = resultType.returnType; - result.parameters = resultType.parameters.toImpl(); + // `resultType` is guaranteed to have been produced by + // `TypeSystemImpl.topMerge`; when that function merges function types, it + // always produces a `FunctionType` whose parameter list is a + // `List`. + result.parameters = resultType.parameters as List; var field = FieldElementImpl(variableName, -1); field.enclosingElement3 = targetClass; diff --git a/pkg/analyzer/lib/src/dart/element/top_merge.dart b/pkg/analyzer/lib/src/dart/element/top_merge.dart index 0b0498dc6c36..ce15c589f1ad 100644 --- a/pkg/analyzer/lib/src/dart/element/top_merge.dart +++ b/pkg/analyzer/lib/src/dart/element/top_merge.dart @@ -172,7 +172,7 @@ class TopMergeHelper { throw _TopMergeStateError(T, S, 'Different number of formal parameters'); } - var R_parameters = []; + var R_parameters = []; for (var i = 0; i < T_parameters.length; i++) { var T_parameter = T_parameters[i]; var S_parameter = S_parameters[i];