diff --git a/pkg/analysis_server/lib/src/domains/execution/completion.dart b/pkg/analysis_server/lib/src/domains/execution/completion.dart index 3ccff5efc44..e4120f673ba 100644 --- a/pkg/analysis_server/lib/src/domains/execution/completion.dart +++ b/pkg/analysis_server/lib/src/domains/execution/completion.dart @@ -115,6 +115,9 @@ library _runtimeCompletion; ); var suggestions = await contributor.computeSuggestions(request); + // Remove completions with synthetic import prefixes. + suggestions.removeWhere((s) => s.completion.startsWith('__prefix')); + // TODO(scheglov) Add support for expressions. var expressions = []; return new RuntimeCompletionResult(expressions, suggestions); diff --git a/pkg/analysis_server/test/src/domains/execution/completion_test.dart b/pkg/analysis_server/test/src/domains/execution/completion_test.dart index cd486599ecb..47f838d8bf5 100644 --- a/pkg/analysis_server/test/src/domains/execution/completion_test.dart +++ b/pkg/analysis_server/test/src/domains/execution/completion_test.dart @@ -269,4 +269,22 @@ class C { assertSuggested('b', returnType: 'int'); assertSuggested('c', returnType: 'double'); } + + test_syntheticImportPrefix() async { + newFile('/test/lib/a.dart', content: 'class A {}'); + newFile('/test/lib/b.dart', content: 'class B {}'); + addContextFile(r''' +import 'a.dart'; +impoty 'b.dart'; +main() { + var a = new A(); + var b = new B(); + // context line +} +'''); + await computeCompletion('^'); + for (var suggestion in result.suggestions) { + expect(suggestion.completion, isNot(startsWith('__prefix'))); + } + } }