From be5b189c19c4e33cfb9b5cf6ca4a0a8d3400850c Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Fri, 18 May 2018 18:57:59 +0000 Subject: [PATCH] Exclude synthetic import prefixes from runtime completion. R=brianwilkerson@google.com Change-Id: I6ebcef8eab433782cc120810f50b872faa097314 Reviewed-on: https://dart-review.googlesource.com/55913 Reviewed-by: Brian Wilkerson Commit-Queue: Konstantin Shcheglov --- .../lib/src/domains/execution/completion.dart | 3 +++ .../src/domains/execution/completion_test.dart | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) 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'))); + } + } }