| Index: pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| index 67e82d24eb318f74e089071794f9b516520e8850..ce09e5a6d0e8137c4735bcc72ce2e1896103f0e9 100644
|
| --- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| +++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| @@ -390,12 +390,16 @@ class FixProcessor {
|
| if (targetElement is ExecutableElement) {
|
| List<ParameterElement> parameters = targetElement.parameters;
|
| int numParameters = parameters.length;
|
| - Expression argument = arguments[numParameters];
|
| + Iterable<ParameterElement> requiredParameters = parameters
|
| + .takeWhile((p) => p.parameterKind == ParameterKind.REQUIRED);
|
| + Iterable<ParameterElement> optionalParameters = parameters
|
| + .skipWhile((p) => p.parameterKind == ParameterKind.REQUIRED);
|
| + int numRequired = requiredParameters.length;
|
| + Expression argument = arguments[numRequired];
|
| // prepare target
|
| int targetOffset;
|
| - if (numParameters != 0) {
|
| - ParameterElement parameterElement = parameters.last;
|
| - AstNode parameterNode = parameterElement.computeNode();
|
| + if (numRequired != 0) {
|
| + AstNode parameterNode = requiredParameters.last.computeNode();
|
| targetOffset = parameterNode.end;
|
| } else {
|
| AstNode targetNode = targetElement.computeNode();
|
| @@ -413,23 +417,26 @@ class FixProcessor {
|
| {
|
| SourceBuilder sb = new SourceBuilder(targetFile, targetOffset);
|
| // append source
|
| - if (numParameters != 0) {
|
| + if (numRequired != 0) {
|
| + sb.append(', ');
|
| + }
|
| + _appendParameterForArgument(sb, numRequired, argument);
|
| + if (numRequired != numParameters) {
|
| sb.append(', ');
|
| }
|
| - _appendParameterForArgument(sb, numParameters, argument);
|
| // add proposal
|
| _insertBuilder(sb, targetElement);
|
| _addFix(DartFixKind.ADD_MISSING_PARAMETER_REQUIRED, []);
|
| }
|
| // optional positional
|
| - {
|
| + if (optionalParameters.isEmpty) {
|
| SourceBuilder sb = new SourceBuilder(targetFile, targetOffset);
|
| // append source
|
| - if (numParameters != 0) {
|
| + if (numRequired != 0) {
|
| sb.append(', ');
|
| }
|
| sb.append('[');
|
| - _appendParameterForArgument(sb, numParameters, argument);
|
| + _appendParameterForArgument(sb, numRequired, argument);
|
| sb.append(']');
|
| // add proposal
|
| _insertBuilder(sb, targetElement);
|
|
|