Skip to content

Commit 6413386

Browse files
pqCommit Queue
authored and
Commit Queue
committed
[wildcards] improve _ type param handling
See: #56361 Change-Id: Ic3be09014afc095490d9332bd124843b5a65e1cd Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/381385 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Phil Quitslund <[email protected]>
1 parent 08998a1 commit 6413386

File tree

2 files changed

+85
-3
lines changed

2 files changed

+85
-3
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1931,7 +1931,9 @@ class DeclarationHelper {
19311931
/// Adds a suggestion for each of the [typeParameters].
19321932
void _suggestTypeParameters(List<TypeParameterElement> typeParameters) {
19331933
for (var parameter in typeParameters) {
1934-
_suggestTypeParameter(parameter);
1934+
if (!_isWildcard(parameter.name)) {
1935+
_suggestTypeParameter(parameter);
1936+
}
19351937
}
19361938
}
19371939

@@ -2180,7 +2182,9 @@ class DeclarationHelper {
21802182
for (var typeParameter in typeParameters.typeParameters) {
21812183
var element = typeParameter.declaredElement;
21822184
if (element != null) {
2183-
_suggestTypeParameter(element);
2185+
if (!_isWildcard(element.name)) {
2186+
_suggestTypeParameter(element);
2187+
}
21842188
}
21852189
}
21862190
}

pkg/analysis_server/test/services/completion/dart/declaration/wildcard_variables_test.dart

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ void main() {
1515
defineReflectiveTests(WildcardLocalVariableTest);
1616
defineReflectiveTests(WildcardParameterTest);
1717
defineReflectiveTests(WildcardTopLevelVariableTest);
18+
defineReflectiveTests(WildcardTypeParameterTest);
1819
});
1920
}
2021

2122
class AbstractWildCardTest extends AbstractCompletionDriverTest {
2223
@override
23-
Set<String> allowedIdentifiers = {'_', '__', '___'};
24+
Set<String> allowedIdentifiers = {'_', '__', '___', 'T'};
2425

2526
@override
2627
bool get includeKeywords => false;
@@ -353,3 +354,80 @@ suggestions
353354
''');
354355
}
355356
}
357+
358+
@reflectiveTest
359+
class WildcardTypeParameterTest extends AbstractWildCardTest {
360+
Future<void> test_constructor_formalParameterList() async {
361+
await computeSuggestions('''
362+
class C<T, _> {
363+
C(^);
364+
}
365+
''');
366+
assertResponse('''
367+
suggestions
368+
T
369+
kind: typeParameter
370+
''');
371+
}
372+
373+
Future<void> test_extensionMethod_formalParameterList() async {
374+
await computeSuggestions('''
375+
extension E<_, T> on List {
376+
void f(^) {}
377+
}
378+
''');
379+
assertResponse('''
380+
suggestions
381+
T
382+
kind: typeParameter
383+
''');
384+
}
385+
386+
Future<void> test_extensionType__representationDeclaration() async {
387+
await computeSuggestions('''
388+
extension type ET<_, T, _ extends num>(^) {}
389+
''');
390+
assertResponse('''
391+
suggestions
392+
T
393+
kind: typeParameter
394+
''');
395+
}
396+
397+
Future<void> test_extensionType_method_formalParameterList() async {
398+
await computeSuggestions('''
399+
extension type ET<_, T, _ extends num>(num n) {
400+
f(^) {}
401+
}
402+
''');
403+
assertResponse('''
404+
suggestions
405+
T
406+
kind: typeParameter
407+
''');
408+
}
409+
410+
Future<void> test_function_formalParameterList() async {
411+
await computeSuggestions('''
412+
f<T,_>(^) {}
413+
''');
414+
assertResponse('''
415+
suggestions
416+
T
417+
kind: typeParameter
418+
''');
419+
}
420+
421+
Future<void> test_method_formalParameterList() async {
422+
await computeSuggestions('''
423+
class C<T, _> {
424+
void m(^);
425+
}
426+
''');
427+
assertResponse('''
428+
suggestions
429+
T
430+
kind: typeParameter
431+
''');
432+
}
433+
}

0 commit comments

Comments
 (0)