[analysis_server] Support extension types in "Move top level to file" refactor

Fixes https://github.com/dart-lang/sdk/issues/60296

Change-Id: I1cac91c280987758ae320621395a79f93b35cf4e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/414764
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart b/pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart
index dabaec5..acca965 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart
@@ -274,6 +274,9 @@
         name = node.name.lexeme;
       } else if (node is ExtensionDeclaration && validSelection(node.name)) {
         name = node.name?.lexeme;
+      } else if (node is ExtensionTypeDeclaration &&
+          validSelection(node.name)) {
+        name = node.name.lexeme;
       } else if (node is FunctionDeclaration &&
           node.parent is CompilationUnit &&
           validSelection(node.name)) {
diff --git a/pkg/analysis_server/test/src/services/refactoring/move_top_level_to_file_test.dart b/pkg/analysis_server/test/src/services/refactoring/move_top_level_to_file_test.dart
index 935779f..36aa414 100644
--- a/pkg/analysis_server/test/src/services/refactoring/move_top_level_to_file_test.dart
+++ b/pkg/analysis_server/test/src/services/refactoring/move_top_level_to_file_test.dart
@@ -1636,6 +1636,31 @@
     );
   }
 
+  Future<void> test_single_extensionType() async {
+    var originalSource = '''
+class A {}
+
+extension type ExtensionTypeToMo^ve(String _) {}
+
+class B {}
+''';
+    var declarationName = 'ExtensionTypeToMove';
+
+    var expected = '''
+>>>>>>>>>> lib/extension_type_to_move.dart created
+extension type ExtensionTypeToMove(String _) {}
+>>>>>>>>>> lib/main.dart
+class A {}
+
+class B {}
+''';
+    await _singleDeclaration(
+      originalSource: originalSource,
+      expected: expected,
+      declarationName: declarationName,
+    );
+  }
+
   Future<void> test_single_function_endOfName() async {
     var originalSource = '''
 class A {}