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');