@@ -8,6 +8,7 @@ import '../../../../client/completion_driver_test.dart';
88
99void main () {
1010 defineReflectiveSuite (() {
11+ defineReflectiveTests (WildcardCatchClauseTest );
1112 defineReflectiveTests (WildcardFieldTest );
1213 defineReflectiveTests (WildcardForLoopTest );
1314 defineReflectiveTests (WildcardImportPrefixTest );
@@ -17,15 +18,56 @@ void main() {
1718 });
1819}
1920
20- /// Fields are binding so not technically wildcards but look just like them.
21- @reflectiveTest
22- class WildcardFieldTest extends AbstractCompletionDriverTest {
21+ class AbstractWildCardTest extends AbstractCompletionDriverTest {
2322 @override
24- Set <String > allowedIdentifiers = {'_' };
23+ Set <String > allowedIdentifiers = {'_' , '__' , '___' };
2524
2625 @override
2726 bool get includeKeywords => false ;
27+ }
28+
29+ @reflectiveTest
30+ class WildcardCatchClauseTest extends AbstractWildCardTest {
31+ Future <void > test_argumentList () async {
32+ await computeSuggestions ('''
33+ void p(Object o) {}
34+
35+ void f() {
36+ try {
37+ } catch(_, _) {
38+ p(^);
39+ }
40+ }
41+ ''' );
42+ assertResponse (r'''
43+ suggestions
44+ ''' );
45+ }
46+
47+ Future <void > test_argumentList_underscores () async {
48+ await computeSuggestions ('''
49+ void p(Object o) {}
50+
51+ void f() {
52+ try {
53+ } catch(__, ___) {
54+ p(^);
55+ }
56+ }
57+ ''' );
58+ assertResponse (r'''
59+ suggestions
60+ __
61+ kind: localVariable
62+ ___
63+ kind: localVariable
64+ ''' );
65+ }
66+ }
2867
68+ /// Fields are binding so not technically wildcards but look just like them.
69+ @reflectiveTest
70+ class WildcardFieldTest extends AbstractWildCardTest {
2971 Future <void > test_argumentList () async {
3072 await computeSuggestions ('''
3173void p(Object o) {}
@@ -63,13 +105,7 @@ suggestions
63105}
64106
65107@reflectiveTest
66- class WildcardForLoopTest extends AbstractCompletionDriverTest {
67- @override
68- Set <String > allowedIdentifiers = {'_' , '__' };
69-
70- @override
71- bool get includeKeywords => false ;
72-
108+ class WildcardForLoopTest extends AbstractWildCardTest {
73109 Future <void > test_forEach_argumentList () async {
74110 await computeSuggestions ('''
75111void p(Object o) {}
@@ -136,12 +172,12 @@ suggestions
136172}
137173
138174@reflectiveTest
139- class WildcardImportPrefixTest extends AbstractCompletionDriverTest {
175+ class WildcardImportPrefixTest extends AbstractWildCardTest {
140176 @override
141- Set < String > allowedIdentifiers = { '_' , '__' , 'isBlank' };
142-
143- @override
144- bool get includeKeywords => false ;
177+ Future < void > setUp () async {
178+ await super . setUp ();
179+ allowedIdentifiers. add ( 'isBlank' );
180+ }
145181
146182 Future <void > test_argumentList () async {
147183 newFile ('$testPackageLibPath /ext.dart' , '''
@@ -215,25 +251,19 @@ suggestions
215251}
216252
217253@reflectiveTest
218- class WildcardLocalVariableTest extends AbstractCompletionDriverTest {
219- @override
220- Set <String > allowedIdentifiers = {'_' , '__' , 'b' };
221-
222- @override
223- bool get includeKeywords => false ;
224-
254+ class WildcardLocalVariableTest extends AbstractWildCardTest {
225255 Future <void > test_argumentList () async {
226256 await computeSuggestions ('''
227257void p(Object o) {}
228258
229259void f() {
230- var _, b = 0;
260+ var _, b0 = 0;
231261 p(^);
232262}
233263''' );
234264 assertResponse (r'''
235265suggestions
236- b
266+ b0
237267 kind: localVariable
238268''' );
239269 }
@@ -270,24 +300,18 @@ suggestions
270300}
271301
272302@reflectiveTest
273- class WildcardParameterTest extends AbstractCompletionDriverTest {
274- @override
275- Set <String > allowedIdentifiers = {'_' , '__' , 'b' };
276-
277- @override
278- bool get includeKeywords => false ;
279-
303+ class WildcardParameterTest extends AbstractWildCardTest {
280304 Future <void > test_argumentList () async {
281305 await computeSuggestions ('''
282306void p(Object o) {}
283307
284- void f(int _, int b ) {
308+ void f(int _, int b0 ) {
285309 p(^);
286310}
287311''' );
288312 assertResponse ('''
289313suggestions
290- b
314+ b0
291315 kind: parameter
292316''' );
293317 }
@@ -311,13 +335,7 @@ suggestions
311335/// Top level variables are binding so not technically wildcards but look just
312336/// like them.
313337@reflectiveTest
314- class WildcardTopLevelVariableTest extends AbstractCompletionDriverTest {
315- @override
316- Set <String > allowedIdentifiers = {'_' };
317-
318- @override
319- bool get includeKeywords => false ;
320-
338+ class WildcardTopLevelVariableTest extends AbstractWildCardTest {
321339 Future <void > test_argumentList () async {
322340 await computeSuggestions ('''
323341int _ = 0;
0 commit comments