reduce the relevance of completions starting with "$"
fixes https://github.com/dart-lang/sdk/issues/27303
R=scheglov@google.com
Review URL: https://codereview.chromium.org/2330413004 .
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
index 0cf9318..d535ef4 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
@@ -331,6 +331,15 @@
}
}
String identifier = element.displayName;
+
+ if (relevance == DART_RELEVANCE_DEFAULT && identifier != null) {
+ // Decrease relevance of suggestions starting with $
+ // https://github.com/dart-lang/sdk/issues/27303
+ if (identifier.startsWith(r'$')) {
+ relevance = DART_RELEVANCE_LOW;
+ }
+ }
+
int alreadyGenerated = _completionTypesGenerated.putIfAbsent(
identifier, () => _COMPLETION_TYPE_NONE);
if (element is MethodElement) {
diff --git a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
index 1a74e78..b3dfba3 100644
--- a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
@@ -2992,9 +2992,9 @@
test_MethodInvocation_no_semicolon() async {
// MethodInvocation ExpressionStatement Block
- addTestSource('''
+ addTestSource(r'''
main() { }
- class I {X get f => new A();get _g => new A();}
+ class I {X get f => new A();get _g => new A(); F $p; void $q(){}}
class A implements I {
var b; X _c;
X get d => new A();get _e => new A();
@@ -3007,6 +3007,8 @@
expect(replacementLength, 0);
assertSuggestGetter('f', 'X');
assertSuggestGetter('_g', null);
+ assertSuggestField(r'$p', 'dynamic', relevance: DART_RELEVANCE_LOW);
+ assertSuggestMethod(r'$q', 'I', 'void', relevance: DART_RELEVANCE_LOW);
assertNotSuggested('b');
assertNotSuggested('_c');
assertNotSuggested('d');