55import 'package:analysis_server/src/cider/completion.dart' ;
66import 'package:analyzer/source/line_info.dart' ;
77import 'package:analyzer_plugin/protocol/protocol_common.dart'
8- show CompletionSuggestion, ElementKind;
8+ show CompletionSuggestion, CompletionSuggestionKind, ElementKind;
99import 'package:meta/meta.dart' ;
1010import 'package:test/test.dart' ;
1111import 'package:test_reflective_loader/test_reflective_loader.dart' ;
@@ -214,6 +214,32 @@ var a = Fo^;
214214 ]);
215215 }
216216
217+ Future <void > test_filterSort_namedArgument_hasPrefix () async {
218+ await _compute (r'''
219+ void foo({int aaa, int bbb});
220+
221+ void f() {
222+ foo(a^);
223+ }
224+ ''' );
225+
226+ _assertHasNamedArgument (name: 'aaa' );
227+ _assertNoNamedArgument (name: 'bbb' );
228+ }
229+
230+ Future <void > test_filterSort_namedArgument_noPrefix () async {
231+ await _compute (r'''
232+ void foo({int aaa, int bbb});
233+
234+ void f() {
235+ foo(^);
236+ }
237+ ''' );
238+
239+ _assertHasNamedArgument (name: 'aaa' );
240+ _assertHasNamedArgument (name: 'bbb' );
241+ }
242+
217243 Future <void > test_filterSort_preferLocal () async {
218244 await _compute (r'''
219245var a = 0;
@@ -288,6 +314,12 @@ main() {
288314 return matching.single;
289315 }
290316
317+ CompletionSuggestion _assertHasNamedArgument ({@required String name}) {
318+ var matching = _matchingNamedArgumentSuggestions (name: name);
319+ expect (matching, hasLength (1 ), reason: 'Expected exactly one completion' );
320+ return matching.single;
321+ }
322+
291323 CompletionSuggestion _assertHasTopLevelVariable ({@required String text}) {
292324 var matching = _matchingCompletions (
293325 text: text,
@@ -309,6 +341,11 @@ main() {
309341 expect (matching, isEmpty, reason: 'Expected zero completions' );
310342 }
311343
344+ void _assertNoNamedArgument ({@required String name}) {
345+ var matching = _matchingNamedArgumentSuggestions (name: name);
346+ expect (matching, isEmpty, reason: 'Expected zero completions' );
347+ }
348+
312349 void _assertOrder (List <CompletionSuggestion > suggestions) {
313350 var lastIndex = - 2 ;
314351 for (var suggestion in suggestions) {
@@ -352,6 +389,22 @@ main() {
352389 }).toList ();
353390 }
354391
392+ List <CompletionSuggestion > _matchingNamedArgumentSuggestions ({
393+ @required String name,
394+ }) {
395+ return _suggestions.where ((e) {
396+ if (e.kind != CompletionSuggestionKind .NAMED_ARGUMENT ) {
397+ return false ;
398+ }
399+
400+ if (! e.completion.startsWith ('$name :' )) {
401+ return false ;
402+ }
403+
404+ return true ;
405+ }).toList ();
406+ }
407+
355408 CiderCompletionComputer _newComputer () {
356409 return _computer = CiderCompletionComputer (
357410 logger,
0 commit comments