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() {