Issue 45467. A setter in lexical scope shadows inherited getter.

Bug: https://github.com/dart-lang/sdk/issues/45467
Change-Id: I1c7c67fcc61f9cc2661ba4a2d73da9634a285d41
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196800
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart b/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart
index 63bc1cf..542fd5e 100644
--- a/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart
@@ -30,7 +30,7 @@
             requested: _resolver.toLegacyElement(scopeSetter),
           );
         }
-        if (!scopeGetter!.isInstanceMember) {
+        if (scopeGetter != null && !scopeGetter.isInstanceMember) {
           return LexicalLookupResult(
             recovery: _resolver.toLegacyElement(scopeGetter),
           );
@@ -41,6 +41,11 @@
             requested: _resolver.toLegacyElement(scopeGetter),
           );
         }
+        if (scopeSetter != null && !scopeSetter.isInstanceMember) {
+          return LexicalLookupResult(
+            recovery: _resolver.toLegacyElement(scopeSetter),
+          );
+        }
       }
     }
 
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
index 0e78785..d45f72d 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
@@ -52,6 +52,24 @@
     ]);
   }
 
+  test_simpleIdentifier_inheritedSetter_shadowedBy_topLevelGetter() async {
+    await assertErrorsInCode('''
+class A {
+  void set foo(int _) {}
+}
+
+int get foo => 0;
+
+class B extends A {
+  void bar() {
+    foo = 0;
+  }
+}
+''', [
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL, 96, 3),
+    ]);
+  }
+
   test_simpleIdentifier_topLevelGetter() async {
     await assertErrorsInCode('''
 int get x => 0;
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
index 1c584a0..69cb215 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
@@ -133,6 +133,24 @@
     ]);
   }
 
+  test_inheritedGetter_shadowedBy_topLevelSetter() async {
+    await assertErrorsInCode('''
+class A {
+  int get foo => 0;
+}
+
+void set foo(int _) {}
+
+class B extends A {
+  void bar() {
+    foo;
+  }
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 96, 3),
+    ]);
+  }
+
   test_initializer() async {
     await assertErrorsInCode('''
 var a = b;