Skip to content

Commit 52b1b9d

Browse files
scheglovCommit Queue
authored and
Commit Queue
committed
Elements. Migrate AddMissingParameter.
Change-Id: If292e7155f7f13e3208759325801197736d84ad9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/387623 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 1f8aea0 commit 52b1b9d

File tree

3 files changed

+30
-13
lines changed

3 files changed

+30
-13
lines changed

pkg/analysis_server/analyzer_use_new_elements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ lib/src/services/correction/dart/add_key_to_constructors.dart
213213
lib/src/services/correction/dart/add_late.dart
214214
lib/src/services/correction/dart/add_leading_newline_to_string.dart
215215
lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart
216+
lib/src/services/correction/dart/add_missing_parameter.dart
216217
lib/src/services/correction/dart/add_missing_parameter_named.dart
217218
lib/src/services/correction/dart/add_missing_required_argument.dart
218219
lib/src/services/correction/dart/add_ne_null.dart

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

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ class AddMissingParameter extends MultiCorrectionProducer {
3131
return const [];
3232
}
3333

34-
var includeOptional = executableParameters.optionalPositional.isEmpty &&
35-
executableParameters.named.isEmpty;
34+
var includeOptional = executableParameters.optionalPositional2.isEmpty &&
35+
executableParameters.named2.isEmpty;
3636
return <ResolvedCorrectionProducer>[
3737
_AddMissingRequiredPositionalParameter(executableParameters,
3838
context: context),
@@ -56,10 +56,11 @@ class _AddMissingOptionalPositionalParameter extends _AddMissingParameter {
5656

5757
@override
5858
Future<void> compute(ChangeBuilder builder) async {
59-
var prefix = _executableParameters.required.isNotEmpty ? ', [' : '[';
60-
if (_executableParameters.required.isNotEmpty) {
59+
var prefix = _executableParameters.required2.isNotEmpty ? ', [' : '[';
60+
if (_executableParameters.required2.isNotEmpty) {
61+
var lastElement = _executableParameters.required2.last;
6162
var prevNode = await _executableParameters
62-
.getParameterNode(_executableParameters.required.last);
63+
.getParameterNode2(lastElement.firstFragment!);
6364
await _addParameter(builder, prevNode?.end, prefix, ']');
6465
} else {
6566
var parameterList = await _executableParameters.getParameterList();
@@ -89,7 +90,7 @@ abstract class _AddMissingParameter extends ResolvedCorrectionProducer {
8990
return;
9091
}
9192
List<Expression> arguments = argumentList.arguments;
92-
var numRequired = _executableParameters.required.length;
93+
var numRequired = _executableParameters.required2.length;
9394
if (numRequired >= arguments.length) {
9495
return;
9596
}
@@ -118,15 +119,17 @@ class _AddMissingRequiredPositionalParameter extends _AddMissingParameter {
118119

119120
@override
120121
Future<void> compute(ChangeBuilder builder) async {
121-
if (_executableParameters.required.isNotEmpty) {
122+
if (_executableParameters.required2.isNotEmpty) {
123+
var lastElement = _executableParameters.required2.last;
122124
var prevNode = await _executableParameters
123-
.getParameterNode(_executableParameters.required.last);
125+
.getParameterNode2(lastElement.firstFragment!);
124126
await _addParameter(builder, prevNode?.end, ', ', '');
125127
} else {
126128
var parameterList = await _executableParameters.getParameterList();
127129
var offset = parameterList?.leftParenthesis.end;
128-
var suffix =
129-
_executableParameters.executable.parameters.isNotEmpty ? ', ' : '';
130+
var suffix = _executableParameters.executable2.formalParameters.isNotEmpty
131+
? ', '
132+
: '';
130133
await _addParameter(builder, offset, '', suffix);
131134
}
132135
}

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:analyzer/src/dart/analysis/session_helper.dart';
1111
class ExecutableParameters {
1212
final AnalysisSessionHelper sessionHelper;
1313
final ExecutableElement executable;
14+
final ExecutableElement2 executable2;
1415

1516
final List<ParameterElement> required = [];
1617
final List<ParameterElement> optionalPositional = [];
@@ -20,7 +21,11 @@ class ExecutableParameters {
2021
final List<FormalParameterElement> optionalPositional2 = [];
2122
final List<FormalParameterElement> named2 = [];
2223

23-
ExecutableParameters._(this.sessionHelper, this.executable) {
24+
ExecutableParameters._(
25+
this.sessionHelper,
26+
this.executable,
27+
this.executable2,
28+
) {
2429
for (var parameter in executable.parameters) {
2530
if (parameter.isRequiredPositional) {
2631
required.add(parameter);
@@ -89,18 +94,26 @@ class ExecutableParameters {
8994
static ExecutableParameters? forInvocation(
9095
AnalysisSessionHelper sessionHelper, AstNode? invocation) {
9196
Element? element;
97+
Element2? element2;
9298
// This doesn't handle FunctionExpressionInvocation.
9399
if (invocation is Annotation) {
94100
element = invocation.element;
101+
element2 = invocation.element2;
95102
} else if (invocation is InstanceCreationExpression) {
96103
element = invocation.constructorName.staticElement;
104+
element2 = invocation.constructorName.element;
97105
} else if (invocation is MethodInvocation) {
98106
element = invocation.methodName.staticElement;
107+
element2 = invocation.methodName.element;
99108
} else if (invocation is ConstructorReferenceNode) {
100109
element = invocation.staticElement;
110+
element2 = invocation.element;
101111
}
102-
if (element is ExecutableElement && !element.isSynthetic) {
103-
return ExecutableParameters._(sessionHelper, element);
112+
if (element is ExecutableElement &&
113+
!element.isSynthetic &&
114+
element2 is ExecutableElement2 &&
115+
!element2.isSynthetic) {
116+
return ExecutableParameters._(sessionHelper, element, element2);
104117
} else {
105118
return null;
106119
}

0 commit comments

Comments
 (0)