Skip to content

Commit 83c9f85

Browse files
bwilkersonCommit Queue
authored andcommitted
Migrate rename_class_member
Change-Id: I5a574c3858a9d59d01952052941e08dde4f1e6b9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/398924 Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Brian Wilkerson <[email protected]>
1 parent 06756dd commit 83c9f85

File tree

12 files changed

+217
-122
lines changed

12 files changed

+217
-122
lines changed

pkg/analysis_server/analyzer_use_new_elements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ lib/src/services/refactoring/legacy/refactoring.dart
4848
lib/src/services/refactoring/legacy/refactoring_internal.dart
4949
lib/src/services/refactoring/legacy/refactoring_manager.dart
5050
lib/src/services/refactoring/legacy/rename.dart
51-
lib/src/services/refactoring/legacy/rename_class_member.dart
5251
lib/src/services/refactoring/legacy/rename_constructor.dart
5352
lib/src/services/refactoring/legacy/rename_extension_member.dart
5453
lib/src/services/refactoring/legacy/rename_import.dart

pkg/analysis_server/lib/src/services/correction/util.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ String getElementKindName(Element element) {
109109
return element.kind.displayName;
110110
}
111111

112+
/// Return the name of the kind of the [element].
113+
String getElementKindName2(Element2 element) {
114+
return element.kind.displayName;
115+
}
116+
112117
/// Returns the name to display in the UI for the given [Element].
113118
String getElementQualifiedName(Element element) {
114119
var kind = element.kind;
@@ -127,6 +132,24 @@ String getElementQualifiedName(Element element) {
127132
}
128133
}
129134

135+
/// Returns the name to display in the UI for the given [element].
136+
String getElementQualifiedName2(Element2 element) {
137+
var kind = element.kind;
138+
if (kind == ElementKind.FIELD || kind == ElementKind.METHOD) {
139+
return '${element.enclosingElement2!.displayName}.${element.displayName}';
140+
} else if (kind == ElementKind.LIBRARY) {
141+
// Libraries may not have names, so use a path relative to the context root.
142+
var session = element.session!;
143+
var pathContext = session.resourceProvider.pathContext;
144+
var rootPath = session.analysisContext.contextRoot.root.path;
145+
var library = element as LibraryElement;
146+
147+
return pathContext.relative(library.source.fullName, from: rootPath);
148+
} else {
149+
return element.displayName;
150+
}
151+
}
152+
130153
/// Returns a class or an unit member enclosing the given [input].
131154
AstNode? getEnclosingClassOrUnitMember(AstNode input) {
132155
var member = input;

pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -646,15 +646,15 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
646646
return validateCreateFunction(_searchEngine, libraryElement, name);
647647
}
648648
// method of class
649-
InterfaceElement? interfaceElement;
649+
InterfaceElement2? interfaceElement;
650650
if (parent is ClassDeclaration) {
651-
interfaceElement = parent.declaredElement!;
651+
interfaceElement = parent.declaredFragment?.element;
652652
} else if (parent is EnumDeclaration) {
653-
interfaceElement = parent.declaredElement!;
653+
interfaceElement = parent.declaredFragment?.element;
654654
} else if (parent is ExtensionTypeDeclaration) {
655-
interfaceElement = parent.declaredElement!;
655+
interfaceElement = parent.declaredFragment?.element;
656656
} else if (parent is MixinDeclaration) {
657-
interfaceElement = parent.declaredElement!;
657+
interfaceElement = parent.declaredFragment?.element;
658658
}
659659
if (interfaceElement != null) {
660660
return validateCreateMethod(

pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,8 +504,8 @@ abstract class RenameRefactoring implements Refactoring {
504504
return RenameClassMemberRefactoringImpl(
505505
workspace,
506506
sessionHelper,
507-
enclosingElement,
508-
element,
507+
enclosingElement.asElement2,
508+
element.asElement2!,
509509
);
510510
}
511511
if (enclosingElement is ExtensionElement) {

pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring_internal.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ class SourceReference {
9393
/// Return the [LibraryElement] for the [file].
9494
LibraryElement get libraryElement => _match.libraryElement;
9595

96+
/// Return the [LibraryElement2] for the [file].
97+
LibraryElement2 get libraryElement2 => _match.libraryElement2;
98+
9699
SourceRange get range => _match.sourceRange;
97100

98101
Source get unitSource => _match.unitSource;

pkg/analysis_server/lib/src/services/refactoring/legacy/rename.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import 'package:analysis_server/src/services/refactoring/legacy/refactoring.dart
99
import 'package:analysis_server/src/services/refactoring/legacy/refactoring_internal.dart';
1010
import 'package:analysis_server/src/services/search/search_engine.dart';
1111
import 'package:analyzer/dart/element/element.dart';
12+
import 'package:analyzer/dart/element/element2.dart';
1213
import 'package:analyzer/src/dart/analysis/session_helper.dart';
1314
import 'package:analyzer/src/generated/java_core.dart';
15+
import 'package:analyzer/src/utilities/extensions/element.dart';
1416
import 'package:analyzer_plugin/utilities/range_factory.dart';
1517

1618
/// Helper for renaming one or more [Element]s.
@@ -35,6 +37,18 @@ class RenameProcessor {
3537
}
3638
}
3739

40+
/// Add the edit that updates the [element] declaration.
41+
void addDeclarationEdit2(Element2? element) {
42+
if (element != null && workspace.containsElement2(element)) {
43+
Fragment? fragment = element.firstFragment;
44+
while (fragment != null) {
45+
var edit = newSourceEdit_range(range.fragmentName(fragment)!, newName);
46+
doSourceChange_addFragmentEdit(change, fragment, edit);
47+
fragment = fragment.nextFragment;
48+
}
49+
}
50+
}
51+
3852
/// Add edits that update [matches].
3953
void addReferenceEdits(List<SearchMatch> matches) {
4054
var references = getSourceReferences(matches);
@@ -88,8 +102,16 @@ abstract class RenameRefactoringImpl extends RefactoringImpl
88102
elementKindName = element.kind.displayName,
89103
oldName = _getOldName(element);
90104

105+
RenameRefactoringImpl.c2(this.workspace, this.sessionHelper, Element2 element)
106+
: searchEngine = workspace.searchEngine,
107+
_element = element.asElement!,
108+
elementKindName = element.kind.displayName,
109+
oldName = _getOldName(element.asElement!);
110+
91111
Element get element => _element;
92112

113+
Element2 get element2 => _element.asElement2!;
114+
93115
@override
94116
Future<RefactoringStatus> checkInitialConditions() {
95117
var result = RefactoringStatus();

0 commit comments

Comments
 (0)