Add fix for `UNDEFINED_ENUM_CONSTANT` to suggest similar names

Fixes #47643

Change-Id: Ic5e5d6464c0480c3060540077b59f229d15e7501
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/241000
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart b/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
index e9659b6..8acb906 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
@@ -219,9 +219,9 @@
   }
 
   Future<void> _proposeMethod(ChangeBuilder builder) async {
-    if (node.parent is MethodInvocation) {
-      var invocation = node.parent as MethodInvocation;
-      await _proposeClassOrMixinMember(builder, invocation.realTarget,
+    var parent = node.parent;
+    if (parent is MethodInvocation) {
+      await _proposeClassOrMixinMember(builder, parent.realTarget,
           (Element element) => element is MethodElement && !element.isOperator);
     }
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 494f1ae..ed60cb1 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -1087,6 +1087,7 @@
     ],
     CompileTimeErrorCode.UNDEFINED_ENUM_CONSTANT: [
       AddEnumConstant.new,
+      ChangeTo.getterOrSetter,
     ],
     CompileTimeErrorCode.UNDEFINED_EXTENSION_GETTER: [
       ChangeTo.getterOrSetter,
diff --git a/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart b/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart
index 7a14be2..d71de37 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart
@@ -143,6 +143,57 @@
 ''');
   }
 
+  Future<void> test_enum_constant() async {
+    await resolveTestCode('''
+enum E { ONE }
+
+E e() {
+  return E.OEN;
+}
+''');
+    await assertHasFix('''
+enum E { ONE }
+
+E e() {
+  return E.ONE;
+}
+''');
+  }
+
+  Future<void> test_enum_getter() async {
+    await resolveTestCode('''
+enum E { ONE }
+
+void f() {
+  E.ONE.indxe;
+}
+''');
+    await assertHasFix('''
+enum E { ONE }
+
+void f() {
+  E.ONE.index;
+}
+''');
+  }
+
+  Future<void> test_enum_method() async {
+    await resolveTestCode('''
+enum E { ONE }
+
+void f() {
+  E.ONE.toStrong();
+}
+''');
+    await assertHasFix('''
+enum E { ONE }
+
+void f() {
+  E.ONE.toString();
+}
+''');
+  }
+
   Future<void> test_function_fromImport() async {
     await resolveTestCode('''
 void f() {