diff --git a/pkg/analyzer/lib/src/dart/constant/utilities.dart b/pkg/analyzer/lib/src/dart/constant/utilities.dart index 36807240659..03b3c569dd5 100644 --- a/pkg/analyzer/lib/src/dart/constant/utilities.dart +++ b/pkg/analyzer/lib/src/dart/constant/utilities.dart @@ -157,8 +157,7 @@ class ConstantFinder extends RecursiveAstVisitor { if (fragment != null) { var element = fragment.element; constantsToCompute.add(element); - // TODO(scheglov): remove cast - constantsToCompute.addAll(element.baseElement.formalParameters.cast()); + constantsToCompute.addAll(element.baseElement.formalParameters); } } } diff --git a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart index 50ca0b01e63..925d68a58de 100644 --- a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart +++ b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart @@ -171,7 +171,7 @@ class ElementDisplayStringBuilder { _writeType(element.returnType); _write(' Function'); _writeTypeParameters(element.typeParameters); - _writeFormalParameters(element.formalParameters.cast(), forElement: true); + _writeFormalParameters(element.formalParameters, forElement: true); } void writeGetterElement(GetterElementImpl element) { diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 432d42e5229..dedfb64cbc3 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart @@ -2204,7 +2204,7 @@ abstract class ExecutableElementImpl extends FunctionTypedElementImpl ExecutableFragmentImpl get firstFragment; @override - List get formalParameters { + List get formalParameters { _ensureReadResolution(); return firstFragment.formalParameters .map((fragment) => fragment.asElement2) @@ -3830,7 +3830,7 @@ class GenericFunctionTypeElementImpl extends FunctionTypedElementImpl GenericFunctionTypeFragmentImpl get firstFragment => _wrappedElement; @override - List get formalParameters => + List get formalParameters => _wrappedElement.formalParameters .map((fragment) => fragment.element) .toList(); @@ -5132,7 +5132,7 @@ abstract class InterfaceFragmentImpl extends InstanceFragmentImpl List _interfaces = const []; /// This callback is set during mixins inference to handle reentrant calls. - List? Function(InterfaceFragmentImpl)? mixinInferenceCallback; + List? Function(InterfaceFragmentImpl)? mixinInferenceCallback; InterfaceTypeImpl? _supertype; @@ -5213,9 +5213,7 @@ abstract class InterfaceFragmentImpl extends InstanceFragmentImpl if (mixinInferenceCallback != null) { var mixins = mixinInferenceCallback!(this); if (mixins != null) { - // TODO(paulberry): eliminate this cast by changing the type of - // `InterfaceElementImpl.mixinInferenceCallback`. - return _mixins = mixins.cast(); + return _mixins = mixins; } } @@ -7682,10 +7680,8 @@ class MixinFragmentImpl extends InterfaceFragmentImpl implements MixinFragment { return _superclassConstraints; } - set superclassConstraints(List superclassConstraints) { - // TODO(paulberry): eliminate this cast by changing the type of the - // `superclassConstraints` parameter. - _superclassConstraints = superclassConstraints.cast(); + set superclassConstraints(List superclassConstraints) { + _superclassConstraints = superclassConstraints; } @override @@ -8739,7 +8735,7 @@ abstract class PropertyInducingElementImpl extends VariableElementImpl if (element.setter case var setterElement?) { if (setterElement.isSynthetic) { setterElement.returnType = VoidTypeImpl.instance; - (setterElement.formalParameters.single as FormalParameterElementImpl) + setterElement.formalParameters.single .type = type; } } @@ -8926,7 +8922,7 @@ class SetterElementImpl extends PropertyAccessorElementImpl } FormalParameterElementImpl get valueFormalParameter { - return formalParameters.single as FormalParameterElementImpl; + return formalParameters.single; } @override diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart index b1aeb548824..780fcc1bf6c 100644 --- a/pkg/analyzer/lib/src/dart/element/member.dart +++ b/pkg/analyzer/lib/src/dart/element/member.dart @@ -224,7 +224,7 @@ abstract class ExecutableMember extends Member ); default: return ParameterMember( - baseElement: element as FormalParameterElementImpl, + baseElement: element, substitution: substitution, ); } diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart index 57764f5994a..9d2e65fb0f0 100644 --- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart +++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart @@ -1656,7 +1656,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { for (var variable in variables.values) { _define(variable); } - guardedPattern.variables = variables.cast(); + guardedPattern.variables = variables; guardedPattern.whenClause?.accept(this); if (then != null) { then(); diff --git a/pkg/analyzer/lib/src/summary2/default_value_resolver.dart b/pkg/analyzer/lib/src/summary2/default_value_resolver.dart index 26bcd9abf13..c96be9eaca0 100644 --- a/pkg/analyzer/lib/src/summary2/default_value_resolver.dart +++ b/pkg/analyzer/lib/src/summary2/default_value_resolver.dart @@ -70,7 +70,7 @@ class DefaultValueResolver { }) { for (var formalParameter in element.formalParameters) { _formalParameterElement( - formalParameter as FormalParameterElementImpl, + formalParameter, enclosingInterfaceElement: enclosingInterfaceElement, enclosingExecutableElement: element, ); diff --git a/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart b/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart index 3382baca539..e36f9d72278 100644 --- a/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart +++ b/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart @@ -259,7 +259,7 @@ class InstanceMemberInferrer { if (setter != null) { if (overriddenSetters.any((s) => _isCovariantSetter(s.baseElement))) { var formalParameter = setter.formalParameters[0]; - (formalParameter as FormalParameterElementImpl).inheritsCovariant = + formalParameter.inheritsCovariant = true; } } @@ -492,7 +492,7 @@ class InstanceMemberInferrer { for (var index = 0; index < formalParameters.length; index++) { var formalParameter = formalParameters[index]; _inferParameterCovariance( - formalParameter as FormalParameterElementImpl, + formalParameter, index, overriddenElements, ); diff --git a/pkg/analyzer/lib/src/summary2/types_builder.dart b/pkg/analyzer/lib/src/summary2/types_builder.dart index 19df00789bb..24998e4d10b 100644 --- a/pkg/analyzer/lib/src/summary2/types_builder.dart +++ b/pkg/analyzer/lib/src/summary2/types_builder.dart @@ -45,11 +45,11 @@ bool _isInterfaceTypeInterface(InterfaceType type) { return true; } -List _toInterfaceTypeList(List? nodeList) { +List _toInterfaceTypeList(List? nodeList) { if (nodeList != null) { return nodeList .map((e) => e.type) - .whereType() + .whereType() .where(_isInterfaceTypeInterface) .toList(); } @@ -187,8 +187,7 @@ class TypesBuilder { case SetterElementImpl(): element.returnType = returnType; var valueElement = - element.formalParameters.singleOrNull - as FormalParameterElementImpl?; + element.formalParameters.singleOrNull; var valueNode = node.functionExpression.parameters?.parameters.firstOrNull; var valueNodeElement = valueNode?.declaredFragment!.element; @@ -231,8 +230,7 @@ class TypesBuilder { case SetterElementImpl(): element.returnType = returnType; var valueElement = - element.formalParameters.singleOrNull - as FormalParameterElementImpl?; + element.formalParameters.singleOrNull; var valueNode = node.parameters?.parameters.firstOrNull; var valueNodeElement = valueNode?.declaredFragment!.element; var valueNodeType = valueNodeElement?.type; @@ -268,8 +266,7 @@ class TypesBuilder { } if (variableElement.setter case var setterElement?) { setterElement.returnType = VoidTypeImpl.instance; - (setterElement.formalParameters.single - as FormalParameterElementImpl) + setterElement.formalParameters.single .type = type; } } @@ -644,14 +641,14 @@ class _MixinsInference { /// we are inferring the [element] now, i.e. there is a loop. /// /// This is an error. So, we return the empty list, and break the loop. - List _callbackWhenLoop(InterfaceFragmentImpl element) { + List _callbackWhenLoop(InterfaceFragmentImpl element) { element.mixinInferenceCallback = null; - return []; + return []; } /// This method is invoked when mixins are asked from the [element], and /// we are not inferring the [element] now, i.e. there is no loop. - List? _callbackWhenRecursion(InterfaceFragmentImpl element) { + List? _callbackWhenRecursion(InterfaceFragmentImpl element) { var declaration = _declarations[element]; if (declaration != null) { _inferDeclaration(declaration); diff --git a/pkg/analyzer/test/src/dart/resolution/constant_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_test.dart index be61695b925..51f3fdce31f 100644 --- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart @@ -40,7 +40,7 @@ const a = const A(); var aLib = findElement2.import('package:test/a.dart').importedLibrary!; var aConstructor = aLib.getClass('A')!.constructors.single; - var p = aConstructor.formalParameters.single as FormalParameterElementImpl; + var p = aConstructor.formalParameters.single; // To evaluate `const A()` we have to evaluate `{int p}`. // Even if its value is `null`.