Issue 57018. Fix for inlining a getter when it is the target of a prefixed identifier.

Bug: https://github.com/dart-lang/sdk/issues/57018
Change-Id: I5a421d21e12b6b830796383a5dcb97dd01f3dac1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/402800
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart
index 2f14237..662caeb 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart
@@ -761,14 +761,16 @@
         Expression usage = _node;
         Expression? target;
         var cascade = false;
-        if (nodeParent is PrefixedIdentifier) {
-          var propertyAccess = nodeParent;
-          usage = propertyAccess;
-          target = propertyAccess.prefix;
+        if (nodeParent case PrefixedIdentifier prefixedIdentifier) {
+          if (prefixedIdentifier.prefix == _node) {
+            usage = prefixedIdentifier.prefix;
+          } else {
+            usage = prefixedIdentifier;
+            target = prefixedIdentifier.prefix;
+          }
           cascade = false;
         }
-        if (nodeParent is PropertyAccess) {
-          var propertyAccess = nodeParent;
+        if (nodeParent case PropertyAccess propertyAccess) {
           usage = propertyAccess;
           target = propertyAccess.realTarget;
           cascade = propertyAccess.isCascaded;
diff --git a/pkg/analysis_server/test/services/refactoring/legacy/inline_method_test.dart b/pkg/analysis_server/test/services/refactoring/legacy/inline_method_test.dart
index c10af04..4c37a5c 100644
--- a/pkg/analysis_server/test/services/refactoring/legacy/inline_method_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/legacy/inline_method_test.dart
@@ -1112,6 +1112,23 @@
 ''');
   }
 
+  Future<void> test_getter_topLevel_prefixedIdentifier_target() async {
+    await indexTestUnit(r'''
+void f() {
+  test.isEven;
+}
+
+int get test => [0].first;
+''');
+    _createRefactoring('test =>');
+    // validate change
+    return _assertSuccessfulRefactoring(r'''
+void f() {
+  [0].first.isEven;
+}
+''');
+  }
+
   Future<void> test_initialMode_all() async {
     await indexTestUnit(r'''
 test(a, b) {