| Index: pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
|
| index 2adcf96e5c0950fe626e1dc99f553bd050685ba1..2487f66a7feaa35cdfcd98a7bf39b687b004ac29 100644
|
| --- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
|
| +++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
|
| @@ -47,11 +47,21 @@ class DartCompletionManager implements CompletionContributor {
|
| }
|
|
|
| // Request Dart specific completions from each contributor
|
| - List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
|
| - for (DartCompletionContributor c in dartCompletionPlugin.contributors) {
|
| - suggestions.addAll(await c.computeSuggestions(dartRequest));
|
| + Map<String, CompletionSuggestion> suggestionMap =
|
| + <String, CompletionSuggestion>{};
|
| + for (DartCompletionContributor contributor
|
| + in dartCompletionPlugin.contributors) {
|
| + for (CompletionSuggestion newSuggestion
|
| + in await contributor.computeSuggestions(dartRequest)) {
|
| + var oldSuggestion = suggestionMap.putIfAbsent(
|
| + newSuggestion.completion, () => newSuggestion);
|
| + if (newSuggestion != oldSuggestion &&
|
| + newSuggestion.relevance > oldSuggestion.relevance) {
|
| + suggestionMap[newSuggestion.completion] = newSuggestion;
|
| + }
|
| + }
|
| }
|
| - return suggestions;
|
| + return suggestionMap.values.toList();
|
| }
|
| }
|
|
|
|
|