commit | dd72ef9179e49bd0526efbf2184c5ad0d009a2f2 | [log] [tgz] |
---|---|---|
author | Danny Tuppeny <danny@tuppeny.com> | Tue Mar 11 11:59:21 2025 -0700 |
committer | Commit Queue <dart-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Mar 11 11:59:21 2025 -0700 |
tree | 9481dab0aa95a966292cbc1c8ec7719052e07e07 | |
parent | 550eb48e75cfe2ddc967e48abad442f3c750d22a [diff] |
[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 {}