Skip to content

Commit 6a927fe

Browse files
stereotype441Commit Queue
authored and
Commit Queue
committed
[analyzer] Change types in CollectionLiteralContext to TypeImpl.
The types of the following members of `CollectionLiteralContext` are all changed to use `TypeImpl` rather than `DartType`: - `elementType` - `iterableType` - `keyType` - `valueType` To reduce the number of casts that need to be added, some field types, getter types, method return types, and method parameter types are changed to `Impl` types in the following classes, mixins, and extensions: - `BodyInferenceContext` - `ElementsTypesMixin` - `ErrorDetectionHelpers` - `ExecutableMember` - `ExtensionMemberResolver` - `ExtensionsExtensions` - `ExtensionsExtensions2` - `FormalParameterElementMixin` - `FragmentedFunctionTypedElementMixin` - `FunctionTypeImpl` - `GenericFunctionInferenceTest` - `InstantiatedExtensionWithMember` - `InterfaceTypeImpl` - `InvocationInferrer` - `LeastUpperBoundHelper` - `LowerBoundTest` - `MethodMember` - `NotInstantiatedExtensionsExtensions` - `NotInstantiatedExtensionsExtensions2` - `ParameterElementExtension` - `ParameterElementMixin` - `ResolverVisitor` - `StringTypes` - `TypedLiteralResolver` - `TypeSystemImpl` - `TypeSystemOperations` - `_BoundsTestBase` - `_InferredCollectionElementTypeInformation` - `_NotInstantiatedExtension` - `_ParamInfo` There is no change to the analyzer public API. This is part of a larger arc of work to change the analyzer's use of the shared code so that the type parameters it supplies are not part of the analyzer public API. See #59763. Change-Id: I7a5f7c411e81b829be205f1919c933f8f874e5ad Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/405404 Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent 939cdfb commit 6a927fe

29 files changed

+288
-222
lines changed

pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import 'package:analyzer/src/dart/ast/extensions.dart';
1717
import 'package:analyzer/src/dart/element/element.dart';
1818
import 'package:analyzer/src/dart/element/extensions.dart';
1919
import 'package:analyzer/src/dart/element/member.dart';
20+
import 'package:analyzer/src/dart/element/type.dart';
2021
import 'package:analyzer/src/dart/element/type_algebra.dart';
2122
import 'package:analyzer/src/dart/resolver/applicable_extensions.dart';
2223
import 'package:analyzer/src/dart/resolver/scope.dart';
@@ -491,9 +492,10 @@ class DeclarationHelper {
491492
targetLibrary: libraryElement,
492493
// Ignore nullability, consistent with non-extension members.
493494
targetType:
494-
type.isDartCoreNull
495-
? type
496-
: library.typeSystem.promoteToNonNull(type),
495+
(type.isDartCoreNull
496+
? type
497+
: library.typeSystem.promoteToNonNull(type))
498+
as TypeImpl,
497499
strictCasts: false,
498500
);
499501
var importData = ImportData(
@@ -749,9 +751,10 @@ class DeclarationHelper {
749751
targetLibrary: libraryElement,
750752
// Ignore nullability, consistent with non-extension members.
751753
targetType:
752-
type.isDartCoreNull
753-
? type
754-
: libraryElement.typeSystem.promoteToNonNull(type),
754+
(type.isDartCoreNull
755+
? type
756+
: libraryElement.typeSystem.promoteToNonNull(type))
757+
as TypeImpl,
755758
strictCasts: false,
756759
);
757760
for (var instantiatedExtension in applicableExtensions) {

pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:analysis_server/src/services/correction/util.dart';
77
import 'package:analysis_server_plugin/edit/dart/correction_producer.dart';
88
import 'package:analyzer/dart/element/type.dart';
99
import 'package:analyzer/src/dart/ast/ast.dart';
10+
import 'package:analyzer/src/dart/element/type.dart';
1011
import 'package:analyzer/src/dart/resolver/applicable_extensions.dart';
1112
import 'package:analyzer/src/utilities/extensions/ast.dart';
1213
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
@@ -283,7 +284,7 @@ abstract class _CreateExtensionMember extends ResolvedCorrectionProducer {
283284
var element = existingExtension.declaredFragment!.element;
284285
var instantiated = [element].applicableTo(
285286
targetLibrary: libraryElement2,
286-
targetType: targetType,
287+
targetType: targetType as TypeImpl,
287288
strictCasts: true,
288289
);
289290
if (instantiated.isNotEmpty) {

pkg/analysis_server/lib/src/services/correction/dart/import_library.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import 'package:analyzer/dart/element/type_system.dart';
1616
import 'package:analyzer/source/source_range.dart';
1717
import 'package:analyzer/src/dart/ast/extensions.dart';
1818
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
19+
import 'package:analyzer/src/dart/element/type.dart';
1920
import 'package:analyzer/src/dart/resolver/applicable_extensions.dart';
2021
import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart';
2122
import 'package:analyzer_plugin/src/utilities/library.dart';
@@ -88,7 +89,10 @@ class ImportLibrary extends MultiCorrectionProducer {
8889
foundImport = true;
8990
var instantiatedExtensions = importedLibrary.exportedExtensions
9091
.havingMemberWithBaseName(memberName)
91-
.applicableTo(targetLibrary: libraryElement2, targetType: targetType);
92+
.applicableTo(
93+
targetLibrary: libraryElement2,
94+
targetType: targetType as TypeImpl,
95+
);
9296
for (var instantiatedExtension in instantiatedExtensions) {
9397
// If the import has a combinator that needs to be updated, then offer
9498
// to update it.
@@ -755,7 +759,10 @@ class _ImportLibraryContainingExtension extends ResolvedCorrectionProducer {
755759
Future<void> compute(ChangeBuilder builder) async {
756760
var instantiatedExtensions = library.exportedExtensions
757761
.havingMemberWithBaseName(memberName)
758-
.applicableTo(targetLibrary: libraryElement2, targetType: targetType);
762+
.applicableTo(
763+
targetLibrary: libraryElement2,
764+
targetType: targetType as TypeImpl,
765+
);
759766
if (instantiatedExtensions.isNotEmpty) {
760767
await builder.addDartFileEdit(file, (builder) {
761768
_uriText = builder.importLibrary(library.uri);

pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:analyzer/dart/ast/token.dart';
1010
import 'package:analyzer/dart/element/element2.dart';
1111
import 'package:analyzer/dart/element/type.dart';
1212
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
13+
import 'package:analyzer/src/dart/element/type.dart';
1314
import 'package:analyzer/src/dart/resolver/applicable_extensions.dart';
1415
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
1516
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
@@ -113,7 +114,7 @@ class _UseDifferentDivisionOperator extends ResolvedCorrectionProducer {
113114
.havingMemberWithBaseName(name)
114115
.applicableTo(
115116
targetLibrary: libraryElement2,
116-
targetType: leftType!,
117+
targetType: leftType! as TypeImpl,
117118
)
118119
.isNotEmpty;
119120
}).isEmpty;

pkg/analyzer/lib/src/dart/ast/ast.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6657,7 +6657,8 @@ final class ExtensionOverrideImpl extends ExpressionImpl
66576657

66586658
@experimental
66596659
@override
6660-
ExtensionElement2 get element2 => (element as ExtensionFragment).element;
6660+
ExtensionElementImpl2 get element2 =>
6661+
(element as ExtensionElementImpl).element;
66616662

66626663
@override
66636664
Token get endToken => _argumentList.endToken;

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

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,7 +1592,7 @@ class ConstructorElementImpl extends ExecutableElementImpl
15921592
}
15931593

15941594
@override
1595-
FunctionType get type {
1595+
FunctionTypeImpl get type {
15961596
// TODO(scheglov): Remove "element" in the breaking changes branch.
15971597
return _type ??= FunctionTypeImpl(
15981598
typeFormals: typeParameters,
@@ -3732,7 +3732,7 @@ abstract class ExecutableElementImpl extends _ExistingElementImpl
37323732
TypeImpl? _returnType;
37333733

37343734
/// The type of function defined by this executable element.
3735-
FunctionType? _type;
3735+
FunctionTypeImpl? _type;
37363736

37373737
@override
37383738
ElementLinkedData? linkedData;
@@ -3887,7 +3887,7 @@ abstract class ExecutableElementImpl extends _ExistingElementImpl
38873887
}
38883888

38893889
@override
3890-
FunctionType get type {
3890+
FunctionTypeImpl get type {
38913891
if (_type != null) return _type!;
38923892

38933893
return _type = FunctionTypeImpl(
@@ -3898,7 +3898,7 @@ abstract class ExecutableElementImpl extends _ExistingElementImpl
38983898
);
38993899
}
39003900

3901-
set type(FunctionType type) {
3901+
set type(FunctionTypeImpl type) {
39023902
_type = type;
39033903
}
39043904

@@ -4084,7 +4084,7 @@ class ExtensionElementImpl2 extends InstanceElementImpl2
40844084
final ExtensionElementImpl firstFragment;
40854085

40864086
@override
4087-
DartType extendedType = InvalidTypeImpl.instance;
4087+
TypeImpl extendedType = InvalidTypeImpl.instance;
40884088

40894089
ExtensionElementImpl2(this.reference, this.firstFragment) {
40904090
reference.element2 = this;
@@ -4663,6 +4663,9 @@ class FormalParameterElementImpl extends PromotableElementImpl2
46634663
/// [FormalParameterElement].
46644664
mixin FormalParameterElementMixin
46654665
implements FormalParameterElement, SharedNamedFunctionParameter {
4666+
@override
4667+
TypeImpl get type;
4668+
46664669
@override
46674670
void appendToWithoutDelimiters2(StringBuffer buffer) {
46684671
buffer.write(
@@ -5116,7 +5119,7 @@ mixin FragmentedFunctionTypedElementMixin<E extends ExecutableFragment>
51165119
// TODO(augmentations): This is wrong. The function type needs to be a merge
51175120
// of the function types of all of the fragments, but I don't know how to
51185121
// perform that merge.
5119-
FunctionType get type {
5122+
FunctionTypeImpl get type {
51205123
if (firstFragment is ExecutableElementImpl) {
51215124
return (firstFragment as ExecutableElementImpl).type;
51225125
} else if (firstFragment is FunctionTypedElementImpl) {
@@ -5246,6 +5249,9 @@ class FunctionElementImpl extends ExecutableElementImpl
52465249
abstract class FunctionTypedElementImpl
52475250
implements _ExistingElementImpl, FunctionTypedElement {
52485251
set returnType(DartType returnType);
5252+
5253+
@override
5254+
FunctionTypeImpl get type;
52495255
}
52505256

52515257
abstract class FunctionTypedElementImpl2 extends TypeParameterizedElementImpl2
@@ -5277,7 +5283,7 @@ class GenericFunctionTypeElementImpl extends _ExistingElementImpl
52775283
bool isNullable = false;
52785284

52795285
/// The type defined by this element.
5280-
FunctionType? _type;
5286+
FunctionTypeImpl? _type;
52815287

52825288
late final GenericFunctionTypeElementImpl2 _element2 =
52835289
GenericFunctionTypeElementImpl2(this);
@@ -5361,7 +5367,7 @@ class GenericFunctionTypeElementImpl extends _ExistingElementImpl
53615367
}
53625368

53635369
@override
5364-
FunctionType get type {
5370+
FunctionTypeImpl get type {
53655371
if (_type != null) return _type!;
53665372

53675373
return _type = FunctionTypeImpl(
@@ -5375,7 +5381,7 @@ class GenericFunctionTypeElementImpl extends _ExistingElementImpl
53755381

53765382
/// Set the function type defined by this function type element to the given
53775383
/// [type].
5378-
set type(FunctionType type) {
5384+
set type(FunctionTypeImpl type) {
53795385
_type = type;
53805386
}
53815387

@@ -8262,10 +8268,15 @@ final class MetadataImpl implements Metadata {
82628268
}
82638269
}
82648270

8271+
abstract class MethodElement2OrMember implements MethodElement2 {
8272+
@override
8273+
FunctionTypeImpl get type;
8274+
}
8275+
82658276
/// A concrete implementation of a [MethodElement].
82668277
class MethodElementImpl extends ExecutableElementImpl
82678278
with AugmentableElement<MethodElementImpl>
8268-
implements MethodElement, MethodFragment {
8279+
implements MethodElementOrMember, MethodFragment {
82698280
@override
82708281
late MethodElementImpl2 element;
82718282

@@ -8365,7 +8376,7 @@ class MethodElementImpl2 extends ExecutableElementImpl2
83658376
FragmentedAnnotatableElementMixin<MethodFragment>,
83668377
FragmentedElementMixin<MethodFragment>,
83678378
_HasSinceSdkVersionMixin
8368-
implements MethodElement2 {
8379+
implements MethodElement2OrMember {
83698380
@override
83708381
final Reference reference;
83718382

@@ -8422,6 +8433,11 @@ class MethodElementImpl2 extends ExecutableElementImpl2
84228433
}
84238434
}
84248435

8436+
abstract class MethodElementOrMember implements MethodElement {
8437+
@override
8438+
FunctionTypeImpl get type;
8439+
}
8440+
84258441
/// A [ClassElementImpl] representing a mixin declaration.
84268442
class MixinElementImpl extends ClassOrMixinElementImpl
84278443
with AugmentableElement<MixinElementImpl>
@@ -9535,6 +9551,9 @@ mixin ParameterElementMixin implements ParameterElement {
95359551
// Overridden to remove the 'deprecated' annotation.
95369552
ParameterKind get parameterKind;
95379553

9554+
@override
9555+
TypeImpl get type;
9556+
95389557
@override
95399558
void appendToWithoutDelimiters(
95409559
StringBuffer buffer, {
@@ -10141,7 +10160,7 @@ class PropertyAccessorElementImpl_ImplicitGetter
1014110160
Version? get sinceSdkVersion => variable2.sinceSdkVersion;
1014210161

1014310162
@override
10144-
FunctionType get type {
10163+
FunctionTypeImpl get type {
1014510164
return _type ??= FunctionTypeImpl(
1014610165
typeFormals: const <TypeParameterElement>[],
1014710166
parameters: const <ParameterElement>[],
@@ -10207,7 +10226,7 @@ class PropertyAccessorElementImpl_ImplicitSetter
1020710226
Version? get sinceSdkVersion => variable2.sinceSdkVersion;
1020810227

1020910228
@override
10210-
FunctionType get type {
10229+
FunctionTypeImpl get type {
1021110230
return _type ??= FunctionTypeImpl(
1021210231
typeFormals: const <TypeParameterElement>[],
1021310232
parameters: parameters,
@@ -11116,7 +11135,7 @@ class TypeAliasElementImpl2 extends TypeDefiningElementImpl2
1111611135
}
1111711136

1111811137
@override
11119-
DartType get aliasedType => firstFragment.aliasedType;
11138+
TypeImpl get aliasedType => firstFragment.aliasedType;
1112011139

1112111140
@override
1112211141
TypeAliasElementImpl2 get baseElement => this;

0 commit comments

Comments
 (0)