Extension type. Request based test for rename, a fix for representation field.

Change-Id: Ic10550089272797724a0047a31fa040f4a293001
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/323706
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart
index cbcba28..38fe412 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart
@@ -493,6 +493,8 @@
       nameNode = node.name;
     } else if (node is NamedType) {
       nameNode = node.name2;
+    } else if (node is RepresentationDeclaration) {
+      nameNode = node.fieldName;
     } else if (node is SimpleFormalParameter) {
       nameNode = node.name;
     } else if (node is SimpleIdentifier) {
diff --git a/pkg/analysis_server/test/edit/refactoring_test.dart b/pkg/analysis_server/test/edit/refactoring_test.dart
index 0eaa487..71b46c4 100644
--- a/pkg/analysis_server/test/edit/refactoring_test.dart
+++ b/pkg/analysis_server/test/edit/refactoring_test.dart
@@ -2157,6 +2157,48 @@
 ''');
   }
 
+  Future<void> test_extensionType_field_representation() {
+    addTestFile('''
+extension type E(int test) {}
+
+void f(E e) {
+  e.test;
+}
+''');
+    return assertSuccessfulRefactoring(() {
+      return sendRenameRequest('test) {}', 'newName');
+    }, '''
+extension type E(int newName) {}
+
+void f(E e) {
+  e.newName;
+}
+''');
+  }
+
+  Future<void> test_extensionType_method() {
+    addTestFile('''
+extension type E(int it) {
+  void test() {}
+}
+
+void f(E e) {
+  e.test();
+}
+''');
+    return assertSuccessfulRefactoring(() {
+      return sendRenameRequest('test() {}', 'newName');
+    }, '''
+extension type E(int it) {
+  void newName() {}
+}
+
+void f(E e) {
+  e.newName();
+}
+''');
+  }
+
   Future<void> test_feedback() {
     addTestFile('''
 class Test {}
diff --git a/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart b/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart
index 8ac257b..b54b53f 100644
--- a/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart
@@ -1996,8 +1996,7 @@
 
   Future<void> test_createChange_MethodElement() async {
     await indexTestUnit('''
-enum E {
-  v;
+extension type E(int it) {
   void test() {}
   void foo() {
     test();
@@ -2018,8 +2017,7 @@
     refactoring.newName = 'newName';
     // validate change
     return assertSuccessfulRefactoring('''
-enum E {
-  v;
+extension type E(int it) {
   void newName() {}
   void foo() {
     newName();