Fix completion of static members from super classes

Fixes #48873

Change-Id: Ife058f8b26e375da0e5f1768be86b7a0d3db15fa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/242280
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
index e518f92..e7df797 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
@@ -99,36 +99,42 @@
     var opType = request.opType;
     if (!isFunctionalArgument) {
       for (var accessor in type.accessors) {
-        if (visibilityTracker._isVisible(accessor.declaration)) {
-          if (accessor.isGetter) {
-            if (opType.includeReturnValueSuggestions) {
-              memberBuilder.addSuggestionForAccessor(
-                  accessor: accessor, inheritanceDistance: inheritanceDistance);
-            }
-          } else {
-            if (opType.includeVoidReturnSuggestions) {
-              memberBuilder.addSuggestionForAccessor(
-                  accessor: accessor, inheritanceDistance: inheritanceDistance);
+        if (!accessor.isStatic) {
+          if (visibilityTracker._isVisible(accessor.declaration)) {
+            if (accessor.isGetter) {
+              if (opType.includeReturnValueSuggestions) {
+                memberBuilder.addSuggestionForAccessor(
+                    accessor: accessor,
+                    inheritanceDistance: inheritanceDistance);
+              }
+            } else {
+              if (opType.includeVoidReturnSuggestions) {
+                memberBuilder.addSuggestionForAccessor(
+                    accessor: accessor,
+                    inheritanceDistance: inheritanceDistance);
+              }
             }
           }
         }
       }
     }
     for (var method in type.methods) {
-      if (visibilityTracker._isVisible(method.declaration)) {
-        if (!method.returnType.isVoid) {
-          if (opType.includeReturnValueSuggestions) {
-            memberBuilder.addSuggestionForMethod(
-                method: method,
-                inheritanceDistance: inheritanceDistance,
-                kind: classMemberSuggestionKind);
-          }
-        } else {
-          if (opType.includeVoidReturnSuggestions) {
-            memberBuilder.addSuggestionForMethod(
-                method: method,
-                inheritanceDistance: inheritanceDistance,
-                kind: classMemberSuggestionKind);
+      if (!method.isStatic) {
+        if (visibilityTracker._isVisible(method.declaration)) {
+          if (!method.returnType.isVoid) {
+            if (opType.includeReturnValueSuggestions) {
+              memberBuilder.addSuggestionForMethod(
+                  method: method,
+                  inheritanceDistance: inheritanceDistance,
+                  kind: classMemberSuggestionKind);
+            }
+          } else {
+            if (opType.includeVoidReturnSuggestions) {
+              memberBuilder.addSuggestionForMethod(
+                  method: method,
+                  inheritanceDistance: inheritanceDistance,
+                  kind: classMemberSuggestionKind);
+            }
           }
         }
       }
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index d8a3ff4..3cfdb13 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -3651,6 +3651,50 @@
     assertSuggestMethod('y2', 'A2', 'int');
   }
 
+  Future<void> test_inherited_static_field() async {
+    addTestSource('''
+class A {
+  static int f1 = 1;
+  int f2 = 2;
+}
+class B extends A {
+  static int f3 = 3;
+  int f4 = 4;
+
+  void m() {
+    f^
+  }
+}''');
+    await computeSuggestions();
+
+    assertNotSuggested('f1');
+    assertSuggestField('f2', 'int');
+    assertSuggestField('f3', 'int');
+    assertSuggestField('f4', 'int');
+  }
+
+  Future<void> test_inherited_static_method() async {
+    addTestSource('''
+class A {
+  static void m1() {};
+  void m2() {};
+}
+class B extends A {
+  static void m3() {};
+  void m4() {};
+
+  void test() {
+    m^
+  }
+}''');
+    await computeSuggestions();
+
+    assertNotSuggested('m1');
+    assertSuggestMethod('m2', 'A', 'void');
+    assertSuggestMethod('m3', 'B', 'void');
+    assertSuggestMethod('m4', 'B', 'void');
+  }
+
   Future<void> test_InstanceCreationExpression() async {
     addTestSource('''
 class A {foo(){var f; {var x;}}}