Skip to content

Commit 6556336

Browse files
fshcheglovCommit Queue
authored andcommitted
Use internally more precise types for typeParameters, remove many casts.
Change-Id: I9d8326c00a2b50aadd4310979e0ec936bfe5e66e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/440780 Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 7dee49e commit 6556336

File tree

9 files changed

+24
-32
lines changed

9 files changed

+24
-32
lines changed

pkg/analyzer/lib/src/dart/constant/utilities.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,7 @@ class ConstantFinder extends RecursiveAstVisitor<void> {
157157
if (fragment != null) {
158158
var element = fragment.element;
159159
constantsToCompute.add(element);
160-
// TODO(scheglov): remove cast
161-
constantsToCompute.addAll(element.baseElement.formalParameters.cast());
160+
constantsToCompute.addAll(element.baseElement.formalParameters);
162161
}
163162
}
164163
}

pkg/analyzer/lib/src/dart/element/display_string_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ class ElementDisplayStringBuilder {
171171
_writeType(element.returnType);
172172
_write(' Function');
173173
_writeTypeParameters(element.typeParameters);
174-
_writeFormalParameters(element.formalParameters.cast(), forElement: true);
174+
_writeFormalParameters(element.formalParameters, forElement: true);
175175
}
176176

177177
void writeGetterElement(GetterElementImpl element) {

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2204,7 +2204,7 @@ abstract class ExecutableElementImpl extends FunctionTypedElementImpl
22042204
ExecutableFragmentImpl get firstFragment;
22052205

22062206
@override
2207-
List<FormalParameterElementMixin> get formalParameters {
2207+
List<FormalParameterElementImpl> get formalParameters {
22082208
_ensureReadResolution();
22092209
return firstFragment.formalParameters
22102210
.map((fragment) => fragment.asElement2)
@@ -3830,7 +3830,7 @@ class GenericFunctionTypeElementImpl extends FunctionTypedElementImpl
38303830
GenericFunctionTypeFragmentImpl get firstFragment => _wrappedElement;
38313831

38323832
@override
3833-
List<FormalParameterElement> get formalParameters =>
3833+
List<FormalParameterElementImpl> get formalParameters =>
38343834
_wrappedElement.formalParameters
38353835
.map((fragment) => fragment.element)
38363836
.toList();
@@ -5132,7 +5132,7 @@ abstract class InterfaceFragmentImpl extends InstanceFragmentImpl
51325132
List<InterfaceTypeImpl> _interfaces = const [];
51335133

51345134
/// This callback is set during mixins inference to handle reentrant calls.
5135-
List<InterfaceType>? Function(InterfaceFragmentImpl)? mixinInferenceCallback;
5135+
List<InterfaceTypeImpl>? Function(InterfaceFragmentImpl)? mixinInferenceCallback;
51365136

51375137
InterfaceTypeImpl? _supertype;
51385138

@@ -5213,9 +5213,7 @@ abstract class InterfaceFragmentImpl extends InstanceFragmentImpl
52135213
if (mixinInferenceCallback != null) {
52145214
var mixins = mixinInferenceCallback!(this);
52155215
if (mixins != null) {
5216-
// TODO(paulberry): eliminate this cast by changing the type of
5217-
// `InterfaceElementImpl.mixinInferenceCallback`.
5218-
return _mixins = mixins.cast();
5216+
return _mixins = mixins;
52195217
}
52205218
}
52215219

@@ -7682,10 +7680,8 @@ class MixinFragmentImpl extends InterfaceFragmentImpl implements MixinFragment {
76827680
return _superclassConstraints;
76837681
}
76847682

7685-
set superclassConstraints(List<InterfaceType> superclassConstraints) {
7686-
// TODO(paulberry): eliminate this cast by changing the type of the
7687-
// `superclassConstraints` parameter.
7688-
_superclassConstraints = superclassConstraints.cast();
7683+
set superclassConstraints(List<InterfaceTypeImpl> superclassConstraints) {
7684+
_superclassConstraints = superclassConstraints;
76897685
}
76907686

76917687
@override
@@ -8739,7 +8735,7 @@ abstract class PropertyInducingElementImpl extends VariableElementImpl
87398735
if (element.setter case var setterElement?) {
87408736
if (setterElement.isSynthetic) {
87418737
setterElement.returnType = VoidTypeImpl.instance;
8742-
(setterElement.formalParameters.single as FormalParameterElementImpl)
8738+
setterElement.formalParameters.single
87438739
.type = type;
87448740
}
87458741
}
@@ -8926,7 +8922,7 @@ class SetterElementImpl extends PropertyAccessorElementImpl
89268922
}
89278923

89288924
FormalParameterElementImpl get valueFormalParameter {
8929-
return formalParameters.single as FormalParameterElementImpl;
8925+
return formalParameters.single;
89308926
}
89318927

89328928
@override

pkg/analyzer/lib/src/dart/element/member.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ abstract class ExecutableMember extends Member
224224
);
225225
default:
226226
return ParameterMember(
227-
baseElement: element as FormalParameterElementImpl,
227+
baseElement: element,
228228
substitution: substitution,
229229
);
230230
}

pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1656,7 +1656,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
16561656
for (var variable in variables.values) {
16571657
_define(variable);
16581658
}
1659-
guardedPattern.variables = variables.cast();
1659+
guardedPattern.variables = variables;
16601660
guardedPattern.whenClause?.accept(this);
16611661
if (then != null) {
16621662
then();

pkg/analyzer/lib/src/summary2/default_value_resolver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class DefaultValueResolver {
7070
}) {
7171
for (var formalParameter in element.formalParameters) {
7272
_formalParameterElement(
73-
formalParameter as FormalParameterElementImpl,
73+
formalParameter,
7474
enclosingInterfaceElement: enclosingInterfaceElement,
7575
enclosingExecutableElement: element,
7676
);

pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ class InstanceMemberInferrer {
259259
if (setter != null) {
260260
if (overriddenSetters.any((s) => _isCovariantSetter(s.baseElement))) {
261261
var formalParameter = setter.formalParameters[0];
262-
(formalParameter as FormalParameterElementImpl).inheritsCovariant =
262+
formalParameter.inheritsCovariant =
263263
true;
264264
}
265265
}
@@ -492,7 +492,7 @@ class InstanceMemberInferrer {
492492
for (var index = 0; index < formalParameters.length; index++) {
493493
var formalParameter = formalParameters[index];
494494
_inferParameterCovariance(
495-
formalParameter as FormalParameterElementImpl,
495+
formalParameter,
496496
index,
497497
overriddenElements,
498498
);

pkg/analyzer/lib/src/summary2/types_builder.dart

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ bool _isInterfaceTypeInterface(InterfaceType type) {
4545
return true;
4646
}
4747

48-
List<InterfaceType> _toInterfaceTypeList(List<NamedType>? nodeList) {
48+
List<InterfaceTypeImpl> _toInterfaceTypeList(List<NamedType>? nodeList) {
4949
if (nodeList != null) {
5050
return nodeList
5151
.map((e) => e.type)
52-
.whereType<InterfaceType>()
52+
.whereType<InterfaceTypeImpl>()
5353
.where(_isInterfaceTypeInterface)
5454
.toList();
5555
}
@@ -187,8 +187,7 @@ class TypesBuilder {
187187
case SetterElementImpl():
188188
element.returnType = returnType;
189189
var valueElement =
190-
element.formalParameters.singleOrNull
191-
as FormalParameterElementImpl?;
190+
element.formalParameters.singleOrNull;
192191
var valueNode =
193192
node.functionExpression.parameters?.parameters.firstOrNull;
194193
var valueNodeElement = valueNode?.declaredFragment!.element;
@@ -231,8 +230,7 @@ class TypesBuilder {
231230
case SetterElementImpl():
232231
element.returnType = returnType;
233232
var valueElement =
234-
element.formalParameters.singleOrNull
235-
as FormalParameterElementImpl?;
233+
element.formalParameters.singleOrNull;
236234
var valueNode = node.parameters?.parameters.firstOrNull;
237235
var valueNodeElement = valueNode?.declaredFragment!.element;
238236
var valueNodeType = valueNodeElement?.type;
@@ -268,8 +266,7 @@ class TypesBuilder {
268266
}
269267
if (variableElement.setter case var setterElement?) {
270268
setterElement.returnType = VoidTypeImpl.instance;
271-
(setterElement.formalParameters.single
272-
as FormalParameterElementImpl)
269+
setterElement.formalParameters.single
273270
.type = type;
274271
}
275272
}
@@ -644,14 +641,14 @@ class _MixinsInference {
644641
/// we are inferring the [element] now, i.e. there is a loop.
645642
///
646643
/// This is an error. So, we return the empty list, and break the loop.
647-
List<InterfaceType> _callbackWhenLoop(InterfaceFragmentImpl element) {
644+
List<InterfaceTypeImpl> _callbackWhenLoop(InterfaceFragmentImpl element) {
648645
element.mixinInferenceCallback = null;
649-
return <InterfaceType>[];
646+
return <InterfaceTypeImpl>[];
650647
}
651648

652649
/// This method is invoked when mixins are asked from the [element], and
653650
/// we are not inferring the [element] now, i.e. there is no loop.
654-
List<InterfaceType>? _callbackWhenRecursion(InterfaceFragmentImpl element) {
651+
List<InterfaceTypeImpl>? _callbackWhenRecursion(InterfaceFragmentImpl element) {
655652
var declaration = _declarations[element];
656653
if (declaration != null) {
657654
_inferDeclaration(declaration);

pkg/analyzer/test/src/dart/resolution/constant_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ const a = const A();
4040

4141
var aLib = findElement2.import('package:test/a.dart').importedLibrary!;
4242
var aConstructor = aLib.getClass('A')!.constructors.single;
43-
var p = aConstructor.formalParameters.single as FormalParameterElementImpl;
43+
var p = aConstructor.formalParameters.single;
4444

4545
// To evaluate `const A()` we have to evaluate `{int p}`.
4646
// Even if its value is `null`.

0 commit comments

Comments
 (0)