Skip to content

Commit 4abe9bf

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

File tree

9 files changed

+42
-54
lines changed

9 files changed

+42
-54
lines changed

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

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2130,6 +2130,9 @@ abstract class ExecutableElement2OrMember implements ExecutableElement {
21302130

21312131
@override
21322132
FunctionTypeImpl get type;
2133+
2134+
@override
2135+
List<TypeParameterElementImpl> get typeParameters;
21332136
}
21342137

21352138
abstract class ExecutableElementImpl extends FunctionTypedElementImpl
@@ -2223,7 +2226,7 @@ abstract class ExecutableElementImpl extends FunctionTypedElementImpl
22232226
@override
22242227
FunctionTypeImpl get type {
22252228
return _type ??= FunctionTypeImpl(
2226-
typeParameters: typeParameters.cast(),
2229+
typeParameters: typeParameters,
22272230
parameters: formalParameters,
22282231
returnType: returnType,
22292232
nullabilitySuffix: NullabilitySuffix.none,
@@ -3127,13 +3130,13 @@ class FormalParameterElementImpl extends PromotableElementImpl
31273130

31283131
@override
31293132
// TODO(augmentations): Implement the merge of formal parameters.
3130-
List<TypeParameterElement> get typeParameters =>
3133+
List<TypeParameterElementImpl> get typeParameters =>
31313134
firstFragment.typeParameters.map((fragment) => fragment.element).toList();
31323135

31333136
@Deprecated('Use typeParameters instead')
31343137
@override
31353138
// TODO(augmentations): Implement the merge of formal parameters.
3136-
List<TypeParameterElement> get typeParameters2 => typeParameters;
3139+
List<TypeParameterElementImpl> get typeParameters2 => typeParameters;
31373140

31383141
@override
31393142
TypeImpl get typeShared => type;
@@ -3182,6 +3185,9 @@ mixin FormalParameterElementMixin
31823185
@override
31833186
TypeImpl get type;
31843187

3188+
@override
3189+
List<TypeParameterElementImpl> get typeParameters;
3190+
31853191
@override
31863192
void appendToWithoutDelimiters(StringBuffer buffer) {
31873193
buffer.write(type.getDisplayString());
@@ -3533,18 +3539,18 @@ mixin FragmentedTypeParameterizedElementMixin<E extends FragmentImpl>
35333539
return true;
35343540
}
35353541

3536-
List<TypeParameterElement> get typeParameters {
3542+
List<TypeParameterElementImpl> get typeParameters {
35373543
var fragment = firstFragment;
35383544
if (fragment is TypeParameterizedFragmentMixin) {
35393545
return fragment.typeParameters
3540-
.map((fragment) => (fragment as TypeParameterFragment).element)
3546+
.map((fragment) => fragment.element)
35413547
.toList();
35423548
}
35433549
return const [];
35443550
}
35453551

35463552
@Deprecated('Use typeParameters instead')
3547-
List<TypeParameterElement> get typeParameters2 {
3553+
List<TypeParameterElementImpl> get typeParameters2 {
35483554
return typeParameters;
35493555
}
35503556
}
@@ -6912,10 +6918,9 @@ class LocalFunctionElementImpl extends ExecutableElementImpl
69126918
String? get name3 => name;
69136919

69146920
@override
6915-
List<TypeParameterElement> get typeParameters =>
6916-
_wrappedFragment.typeParameters
6917-
.map((fragment) => (fragment as TypeParameterFragment).element)
6918-
.toList();
6921+
List<TypeParameterElementImpl> get typeParameters {
6922+
return firstFragment.typeParameters.map((fragment) => fragment.element).toList();
6923+
}
69196924

69206925
@Deprecated('Use typeParameters instead')
69216926
@override
@@ -8693,6 +8698,9 @@ abstract class PropertyAccessorElementImpl extends ExecutableElementImpl
86938698
@override
86948699
String? get name3 => name;
86958700

8701+
@override
8702+
List<TypeParameterElementImpl> get typeParameters;
8703+
86968704
@override
86978705
@trackedDirectly
86988706
PropertyInducingElementImpl? get variable {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,7 @@ class InheritanceManager3 {
983983
transformedParameters.map((e) => e.firstFragment).toList();
984984
resultFragment.typeParameters =
985985
executable.typeParameters
986-
.map((e) => e.firstFragment as TypeParameterFragmentImpl)
986+
.map((e) => e.firstFragment)
987987
.toList();
988988

989989
var elementName = executable.name!;

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ class FieldFormalParameterMember extends ParameterMember
383383
required MapSubstitution substitution,
384384
}) {
385385
var freshTypeParameters = _SubstitutedTypeParameters(
386-
baseElement.typeParameters.cast(),
386+
baseElement.typeParameters,
387387
substitution,
388388
);
389389
return FieldFormalParameterMember._(
@@ -767,8 +767,7 @@ class MethodMember extends ExecutableMember implements MethodElement2OrMember {
767767
required MapSubstitution substitution,
768768
}) {
769769
var freshTypeParameters = _SubstitutedTypeParameters(
770-
// TODO(scheglov): avoid the cast
771-
baseElement.typeParameters.cast(),
770+
baseElement.typeParameters,
772771
substitution,
773772
);
774773
return MethodMember._(
@@ -846,7 +845,7 @@ class ParameterMember extends VariableMember with FormalParameterElementMixin {
846845
required MapSubstitution substitution,
847846
}) {
848847
var freshTypeParameters = _SubstitutedTypeParameters(
849-
baseElement.typeParameters.cast(),
848+
baseElement.typeParameters,
850849
substitution,
851850
);
852851
return ParameterMember._(
@@ -1041,8 +1040,7 @@ abstract class PropertyAccessorMember extends ExecutableMember
10411040
required MapSubstitution substitution,
10421041
}) {
10431042
var freshTypeParameters = _SubstitutedTypeParameters(
1044-
// TODO(scheglov): avoid the cast
1045-
baseElement.typeParameters.cast(),
1043+
baseElement.typeParameters,
10461044
substitution,
10471045
);
10481046
if (baseElement is GetterElementImpl) {
@@ -1191,7 +1189,7 @@ class SuperFormalParameterMember extends ParameterMember
11911189
required MapSubstitution substitution,
11921190
}) {
11931191
var freshTypeParameters = _SubstitutedTypeParameters(
1194-
baseElement.typeParameters.cast(),
1192+
baseElement.typeParameters,
11951193
substitution,
11961194
);
11971195
return SuperFormalParameterMember._(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ class ExtensionMemberResolver {
384384
}
385385
} else {
386386
inferenceLogWriter?.enterGenericInference(
387-
typeParameters.cast(),
387+
typeParameters,
388388
element.extendedType,
389389
);
390390
var inferrer = GenericInferrer(

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

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -331,9 +331,7 @@ class TypedLiteralResolver {
331331
var iterableType = unwrappedContextType.asInstanceOf(
332332
_typeProvider.iterableElement,
333333
);
334-
var mapType = unwrappedContextType.asInstanceOf(
335-
_typeProvider.mapElement,
336-
);
334+
var mapType = unwrappedContextType.asInstanceOf(_typeProvider.mapElement);
337335
var isIterable = iterableType != null;
338336
var isMap = mapType != null;
339337

@@ -474,12 +472,7 @@ class TypedLiteralResolver {
474472
}) {
475473
var element = _typeProvider.listElement;
476474
var typeParameters = element.typeParameters;
477-
inferenceLogWriter?.enterGenericInference(
478-
// TODO(paulberry): make this cast unnecessary by changing
479-
// `TypeProviderImpl.listElement2` to `ClassElementImpl2`.
480-
typeParameters.cast(),
481-
element.thisType,
482-
);
475+
inferenceLogWriter?.enterGenericInference(typeParameters, element.thisType);
483476

484477
return _typeSystem.setupGenericTypeInference(
485478
typeParameters: typeParameters,
@@ -549,9 +542,7 @@ class TypedLiteralResolver {
549542
) {
550543
var element = _typeProvider.mapElement;
551544
inferenceLogWriter?.enterGenericInference(
552-
// TODO(paulberry): make this cast unnecessary by changing
553-
// `TypeProviderImpl.mapElement2` to `ClassElementImpl2`.
554-
element.typeParameters.cast(),
545+
element.typeParameters,
555546
element.thisType,
556547
);
557548
return _typeSystem.setupGenericTypeInference(
@@ -662,9 +653,7 @@ class TypedLiteralResolver {
662653
) {
663654
var element = _typeProvider.setElement;
664655
inferenceLogWriter?.enterGenericInference(
665-
// TODO(paulberry): make this cast unnecessary by changing
666-
// `TypeProviderImpl.setElement2` to `ClassElementImpl2`.
667-
element.typeParameters.cast(),
656+
element.typeParameters,
668657
element.thisType,
669658
);
670659
return _typeSystem.setupGenericTypeInference(

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -927,8 +927,7 @@ class LibraryReader {
927927
element.enclosingElement as InstanceElementImpl;
928928
reader._addTypeParameters2(enclosingElement.typeParameters);
929929

930-
// TODO(scheglov): remove cast
931-
reader._addTypeParameters2(element.typeParameters.cast());
930+
reader._addTypeParameters2(element.typeParameters);
932931

933932
element.returnType = reader.readRequiredType();
934933
}),
@@ -1206,8 +1205,7 @@ class LibraryReader {
12061205

12071206
element.deferReadResolution(
12081207
_createDeferredReadResolutionCallback((reader) {
1209-
// TODO(scheglov): remove cast
1210-
reader._addTypeParameters2(element.typeParameters.cast());
1208+
reader._addTypeParameters2(element.typeParameters);
12111209

12121210
element.returnType = reader.readRequiredType();
12131211
}),
@@ -1308,8 +1306,7 @@ class LibraryReader {
13081306

13091307
element.deferReadResolution(
13101308
_createDeferredReadResolutionCallback((reader) {
1311-
// TODO(scheglov): remove cast
1312-
reader._addTypeParameters2(element.typeParameters.cast());
1309+
reader._addTypeParameters2(element.typeParameters);
13131310
element.aliasedType = reader.readRequiredType();
13141311
}),
13151312
);

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,7 @@ class BundleWriter {
200200
_sink.writeList(element.fragments, _writeFragmentId);
201201

202202
_writeElementResolution(() {
203-
// TODO(scheglov): avoid cast
204-
_resolutionSink.withTypeParameters(element.typeParameters.cast(), () {
203+
_resolutionSink.withTypeParameters(element.typeParameters, () {
205204
_resolutionSink.writeType(element.returnType);
206205
_resolutionSink.writeElement(element.superConstructor);
207206
_resolutionSink.writeElement(element.redirectedConstructor);
@@ -548,8 +547,7 @@ class BundleWriter {
548547
_sink._writeTopLevelInferenceError(element.typeInferenceError);
549548

550549
_writeElementResolution(() {
551-
// TODO(scheglov): avoid cast
552-
_resolutionSink.withTypeParameters(element.typeParameters.cast(), () {
550+
_resolutionSink.withTypeParameters(element.typeParameters, () {
553551
_resolutionSink.writeType(element.returnType);
554552
// TODO(scheglov): formal parameters
555553
});
@@ -720,7 +718,7 @@ class BundleWriter {
720718
_sink.writeList(element.fragments, _writeFragmentId);
721719

722720
_writeElementResolution(() {
723-
_resolutionSink.withTypeParameters(element.typeParameters.cast(), () {
721+
_resolutionSink.withTypeParameters(element.typeParameters, () {
724722
_resolutionSink.writeType(element.returnType);
725723
});
726724
});
@@ -749,7 +747,7 @@ class BundleWriter {
749747
_sink.writeList(element.fragments, _writeFragmentId);
750748

751749
_writeElementResolution(() {
752-
_resolutionSink.withTypeParameters(element.typeParameters.cast(), () {
750+
_resolutionSink.withTypeParameters(element.typeParameters, () {
753751
_resolutionSink.writeType(element.aliasedType);
754752
});
755753
});
@@ -1034,7 +1032,7 @@ class ResolutionSink extends _SummaryDataWriter {
10341032
_writeFormalParameterKind2(parameter);
10351033
writeBool(parameter.hasImplicitType);
10361034
writeBool(parameter.isInitializingFormal);
1037-
_writeTypeParameters2(parameter.typeParameters.cast(), () {
1035+
_writeTypeParameters2(parameter.typeParameters, () {
10381036
writeType(parameter.type);
10391037
_writeElementName(parameter);
10401038
_writeFormalParameters2(

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -759,8 +759,7 @@ class InstanceMemberInferrer {
759759

760760
return replaceTypeParameters(
761761
overriddenType,
762-
// TODO(scheglov): remove this cast
763-
elementTypeParameters.cast(),
762+
elementTypeParameters,
764763
);
765764
}
766765

pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer/dart/element/element.dart';
65
import 'package:analyzer/src/dart/element/element.dart';
76
import 'package:analyzer/src/dart/element/type.dart';
87
import 'package:analyzer/src/dart/element/type_constraint_gatherer.dart';
@@ -1058,14 +1057,14 @@ class TypeConstraintGathererTest extends AbstractTypeSystemTest {
10581057
}
10591058

10601059
void _checkMatch(
1061-
List<TypeParameterElement> typeParameters,
1060+
List<TypeParameterElementImpl> typeParameters,
10621061
TypeImpl P,
10631062
TypeImpl Q,
10641063
bool leftSchema,
10651064
List<String> expected,
10661065
) {
10671066
var gatherer = TypeConstraintGatherer(
1068-
typeParameters: typeParameters.cast(),
1067+
typeParameters: typeParameters,
10691068
typeSystemOperations: TypeSystemOperations(
10701069
typeSystem,
10711070
strictCasts: false,
@@ -1094,13 +1093,13 @@ class TypeConstraintGathererTest extends AbstractTypeSystemTest {
10941093
}
10951094

10961095
void _checkNotMatch(
1097-
List<TypeParameterElement> typeParameters,
1096+
List<TypeParameterElementImpl> typeParameters,
10981097
TypeImpl P,
10991098
TypeImpl Q,
11001099
bool leftSchema,
11011100
) {
11021101
var gatherer = TypeConstraintGatherer(
1103-
typeParameters: typeParameters.cast(),
1102+
typeParameters: typeParameters,
11041103
typeSystemOperations: TypeSystemOperations(
11051104
typeSystem,
11061105
strictCasts: false,

0 commit comments

Comments
 (0)