Skip to content

Commit 66624da

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Update ExecutableElementImpl.parameters to return List<ParameterElementImpl>.
Change-Id: I6d54810bc9b7c66bf9573d8e5748f132e57dee63 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/403800 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 1eee8ba commit 66624da

File tree

7 files changed

+40
-25
lines changed

7 files changed

+40
-25
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -561,11 +561,11 @@ class ClassElementImpl extends ClassOrMixinElementImpl
561561
var hasMixinWithInstanceVariables = mixins.any(typeHasInstanceVariables);
562562
implicitConstructor.isConst =
563563
superclassConstructor.isConst && !hasMixinWithInstanceVariables;
564-
List<ParameterElement> superParameters = superclassConstructor.parameters;
564+
var superParameters = superclassConstructor.parameters;
565565
int count = superParameters.length;
566566
var argumentsForSuperInvocation = <ExpressionImpl>[];
567567
if (count > 0) {
568-
var implicitParameters = <ParameterElement>[];
568+
var implicitParameters = <ParameterElementImpl>[];
569569
for (int i = 0; i < count; i++) {
570570
ParameterElement superParameter = superParameters[i];
571571
ParameterElementImpl implicitParameter;
@@ -3649,7 +3649,7 @@ abstract class ExecutableElementImpl extends _ExistingElementImpl
36493649
implements ExecutableElement, ExecutableFragment {
36503650
/// A list containing all of the parameters defined by this executable
36513651
/// element.
3652-
List<ParameterElement> _parameters = const [];
3652+
List<ParameterElementImpl> _parameters = const [];
36533653

36543654
/// The inferred return type of this executable element.
36553655
DartType? _returnType;
@@ -3772,16 +3772,16 @@ abstract class ExecutableElementImpl extends _ExistingElementImpl
37723772
}
37733773

37743774
@override
3775-
List<ParameterElement> get parameters {
3775+
List<ParameterElementImpl> get parameters {
37763776
linkedData?.read(this);
37773777
return _parameters;
37783778
}
37793779

37803780
/// Set the parameters defined by this executable element to the given
37813781
/// [parameters].
3782-
set parameters(List<ParameterElement> parameters) {
3783-
for (ParameterElement parameter in parameters) {
3784-
(parameter as ParameterElementImpl).enclosingElement3 = this;
3782+
set parameters(List<ParameterElementImpl> parameters) {
3783+
for (var parameter in parameters) {
3784+
parameter.enclosingElement3 = this;
37853785
}
37863786
_parameters = parameters;
37873787
}
@@ -9844,7 +9844,7 @@ class PropertyAccessorElementImpl_ImplicitSetter
98449844
Element get nonSynthetic => variable2;
98459845

98469846
@override
9847-
List<ParameterElement> get parameters {
9847+
List<ParameterElementImpl> get parameters {
98489848
if (_parameters.isNotEmpty) {
98499849
return _parameters;
98509850
}

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

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,18 @@ extension LibraryExtension2 on LibraryElement2? {
203203
this?.featureSet.isEnabled(Feature.wildcard_variables) ?? false;
204204
}
205205

206-
extension ParameterElementExtensions on ParameterElement {
206+
extension ListOfParameterElementExtension on List<ParameterElement> {
207+
/// Returns `this` as `List<ParameterElementImpl>`, converting if it isn't
208+
/// one already.
209+
List<ParameterElementImpl> toImpl() {
210+
return switch (this) {
211+
List<ParameterElementImpl> already => already,
212+
_ => [for (var p in this) p.toImpl()],
213+
};
214+
}
215+
}
216+
217+
extension ParameterElementExtension on ParameterElement {
207218
/// Return [ParameterElement] with the specified properties replaced.
208219
ParameterElementImpl copyWith({
209220
DartType? type,
@@ -220,8 +231,12 @@ extension ParameterElementExtensions on ParameterElement {
220231

221232
/// Returns `this`, converted to a [ParameterElementImpl] if it isn't one
222233
/// already.
223-
ParameterElementImpl toImpl() =>
224-
switch (this) { ParameterElementImpl p => p, _ => copyWith() };
234+
ParameterElementImpl toImpl() {
235+
return switch (this) {
236+
ParameterElementImpl p => p,
237+
_ => copyWith(),
238+
};
239+
}
225240
}
226241

227242
extension RecordTypeExtension on RecordType {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,7 +1140,7 @@ class InheritanceManager3 {
11401140
result.name2 = fragmentName;
11411141
result.typeParameters = resultType.typeFormals;
11421142
result.returnType = resultType.returnType;
1143-
result.parameters = resultType.parameters;
1143+
result.parameters = resultType.parameters.toImpl();
11441144
result.element = MethodElementImpl2(
11451145
Reference.root(), // TODO(scheglov): wrong
11461146
firstMethod.name,
@@ -1158,7 +1158,7 @@ class InheritanceManager3 {
11581158
result.isGetter = firstAccessor.isGetter;
11591159
result.isSetter = firstAccessor.isSetter;
11601160
result.returnType = resultType.returnType;
1161-
result.parameters = resultType.parameters;
1161+
result.parameters = resultType.parameters.toImpl();
11621162

11631163
var field = FieldElementImpl(variableName, -1);
11641164
field.enclosingElement3 = targetClass;

pkg/analyzer/lib/src/generated/testing/element_factory.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ class ElementFactory {
236236
ClassElement enclosingElement,
237237
String methodName,
238238
DartType returnType,
239-
List<ParameterElement> parameters) {
239+
List<ParameterElementImpl> parameters) {
240240
MethodElementImpl method = MethodElementImpl(methodName, 0);
241241
method.enclosingElement3 = enclosingElement;
242242
method.parameters = parameters;
@@ -338,7 +338,7 @@ class ElementFactory {
338338
setter.isSetter = true;
339339
setter.isSynthetic = true;
340340
setter.variable2 = field;
341-
setter.parameters = <ParameterElement>[parameter];
341+
setter.parameters = [parameter];
342342
setter.returnType = VoidTypeImpl.instance;
343343
setter.isStatic = isStatic;
344344
field.setter = setter;

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ class InstanceMemberInferrer {
189189
if (parameters.isEmpty) {
190190
return;
191191
}
192-
var parameter = parameters[0] as ParameterElementImpl;
192+
var parameter = parameters[0];
193193

194194
if (overriddenSetters.any(_isCovariantSetter)) {
195195
parameter.inheritsCovariant = true;
@@ -227,7 +227,7 @@ class InstanceMemberInferrer {
227227
if (field != null) {
228228
if (field.setter != null) {
229229
if (overriddenSetters.any(_isCovariantSetter)) {
230-
var parameter = field.setter!.parameters[0] as ParameterElementImpl;
230+
var parameter = field.setter!.parameters[0];
231231
parameter.inheritsCovariant = true;
232232
}
233233
}
@@ -579,7 +579,7 @@ class InstanceMemberInferrer {
579579
return;
580580
}
581581

582-
var parameter = parameters[0] as ParameterElementImpl;
582+
var parameter = parameters[0];
583583
if (!parameter.hasImplicitType) {
584584
element.isOperatorEqualWithParameterTypeFromObject = false;
585585
return;

pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -990,7 +990,7 @@ class _MockSdkElementsBuilder {
990990
String name = '',
991991
bool isConst = false,
992992
bool isFactory = false,
993-
List<ParameterElement> parameters = const [],
993+
List<ParameterElementImpl> parameters = const [],
994994
}) {
995995
var element = ConstructorElementImpl(name, 0);
996996
element.name2 = name.ifNotEmptyOrElse('new');
@@ -1014,7 +1014,7 @@ class _MockSdkElementsBuilder {
10141014
String name,
10151015
DartType returnType, {
10161016
List<TypeParameterElement> typeFormals = const [],
1017-
List<ParameterElement> parameters = const [],
1017+
List<ParameterElementImpl> parameters = const [],
10181018
}) {
10191019
return FunctionElementImpl(name, 0)
10201020
..parameters = parameters
@@ -1071,15 +1071,15 @@ class _MockSdkElementsBuilder {
10711071
String name,
10721072
DartType returnType, {
10731073
List<TypeParameterElement> typeFormals = const [],
1074-
List<ParameterElement> parameters = const [],
1074+
List<ParameterElementImpl> parameters = const [],
10751075
}) {
10761076
return MethodElementImpl(name, 0)
10771077
..parameters = parameters
10781078
..returnType = returnType
10791079
..typeParameters = typeFormals;
10801080
}
10811081

1082-
ParameterElement _namedParameter(String name, DartType type,
1082+
ParameterElementImpl _namedParameter(String name, DartType type,
10831083
{String? initializerCode}) {
10841084
var parameter = DefaultParameterElementImpl(
10851085
name: name,
@@ -1155,7 +1155,7 @@ class _MockSdkElementsBuilder {
11551155
];
11561156
}
11571157

1158-
ParameterElement _positionalParameter(String name, DartType type) {
1158+
ParameterElementImpl _positionalParameter(String name, DartType type) {
11591159
var parameter = ParameterElementImpl(
11601160
name: name,
11611161
nameOffset: 0,
@@ -1165,7 +1165,7 @@ class _MockSdkElementsBuilder {
11651165
return parameter;
11661166
}
11671167

1168-
ParameterElement _requiredParameter(String name, DartType type) {
1168+
ParameterElementImpl _requiredParameter(String name, DartType type) {
11691169
var parameter = ParameterElementImpl(
11701170
name: name,
11711171
nameOffset: 0,

pkg/analyzer/test/generated/elements_types_mixin.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ mixin ElementsTypesMixin {
402402
DartType returnType, {
403403
bool isStatic = false,
404404
List<TypeParameterElement> typeFormals = const [],
405-
List<ParameterElement> parameters = const [],
405+
List<ParameterElementImpl> parameters = const [],
406406
}) {
407407
return MethodElementImpl(name, 0)
408408
..isStatic = isStatic

0 commit comments

Comments
 (0)