Skip to content

Commit 79c987d

Browse files
FMorschelCommit Queue
authored andcommitted
[DAS] Fixes getDefaultStringParameterValue for parameters with no name
Fixes: #60579 Change-Id: I5bc2ef990fab1ef8a76efb6fdcb53dbc8ba9c10d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/423761 Commit-Queue: Brian Wilkerson <[email protected]> Reviewed-by: Samuel Rawlins <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Auto-Submit: Felipe Morschel <[email protected]>
1 parent 5ae5470 commit 79c987d

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:analyzer/dart/element/nullability_suffix.dart';
1515
import 'package:analyzer/dart/element/type.dart';
1616
import 'package:analyzer/source/source.dart';
1717
import 'package:analyzer/src/utilities/extensions/flutter.dart';
18+
import 'package:analyzer/src/utilities/extensions/string.dart';
1819
import 'package:analyzer_plugin/protocol/protocol_common.dart'
1920
as protocol
2021
show Element, ElementKind;
@@ -179,8 +180,12 @@ DefaultArgument? getDefaultStringParameterValue(
179180
return DefaultArgument('$quote$quote', cursorPosition: 1);
180181
}
181182
} else if (type is FunctionType) {
182-
var params = type.formalParameters
183-
.map((p) => '${getTypeString(p.type)}${p.displayName}')
183+
var params = type.formalParameters.indexed
184+
.map((r) {
185+
var (index, parameter) = r;
186+
var name = parameter.displayName.ifNotEmptyOrElse('p${index + 1}');
187+
return '${getTypeString(parameter.type)}$name';
188+
})
184189
.join(', ');
185190
// TODO(devoncarew): Support having this method return text with newlines.
186191
var text = '($params) { }';

pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,23 @@ void f() {
319319
''');
320320
}
321321

322+
Future<void> test_functionType_noParameterName() async {
323+
await resolveTestCode('''
324+
void foo({required void Function(int) f}) {}
325+
326+
void bar() {
327+
foo();
328+
}
329+
''');
330+
await assertHasFix('''
331+
void foo({required void Function(int) f}) {}
332+
333+
void bar() {
334+
foo(f: (int p1) { });
335+
}
336+
''');
337+
}
338+
322339
Future<void> test_multiple() async {
323340
await resolveTestCode('''
324341
test({required int a, required int bcd}) {}

0 commit comments

Comments
 (0)