mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:31:57 +00:00
Issue 50604. Fix renaming extension at its declaration.
Bug: https://github.com/dart-lang/sdk/issues/50604 Change-Id: I1c685ea7545ef120e5fc23fe6a507ded8c4f4cb9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/274083 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
356d15a3fc
commit
aea639bd03
|
@ -464,6 +464,8 @@ abstract class RenameRefactoring implements Refactoring {
|
|||
nameNode = node;
|
||||
} else if (node is EnumConstantDeclaration) {
|
||||
nameNode = node.name;
|
||||
} else if (node is ExtensionDeclaration) {
|
||||
nameNode = node.name;
|
||||
} else if (node is FieldFormalParameter) {
|
||||
nameNode = node.name;
|
||||
} else if (node is ImportDirective) {
|
||||
|
|
|
@ -51,6 +51,9 @@ class RenameUnitMemberRefactoringImpl extends RenameRefactoringImpl {
|
|||
|
||||
@override
|
||||
String get refactoringName {
|
||||
if (element is ExtensionElement) {
|
||||
return 'Rename Extension';
|
||||
}
|
||||
if (element is FunctionElement) {
|
||||
return 'Rename Top-Level Function';
|
||||
}
|
||||
|
|
|
@ -1971,6 +1971,64 @@ enum E {
|
|||
);
|
||||
}
|
||||
|
||||
Future<void> test_extension_atDeclaration() {
|
||||
addTestFile('''
|
||||
extension Test on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
Test(0).foo();
|
||||
}
|
||||
''');
|
||||
return assertSuccessfulRefactoring(
|
||||
() {
|
||||
return sendRenameRequest('Test on int', 'NewName');
|
||||
},
|
||||
'''
|
||||
extension NewName on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
NewName(0).foo();
|
||||
}
|
||||
''',
|
||||
feedbackValidator: (feedback) {
|
||||
var renameFeedback = feedback as RenameFeedback;
|
||||
expect(renameFeedback.offset, 10);
|
||||
expect(renameFeedback.length, 4);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> test_extension_atReference() {
|
||||
addTestFile('''
|
||||
extension Test on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
Test(0).foo();
|
||||
}
|
||||
''');
|
||||
return assertSuccessfulRefactoring(
|
||||
() {
|
||||
return sendRenameRequest('Test(0)', 'NewName');
|
||||
},
|
||||
'''
|
||||
extension NewName on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
NewName(0).foo();
|
||||
}
|
||||
''',
|
||||
feedbackValidator: (feedback) {
|
||||
var renameFeedback = feedback as RenameFeedback;
|
||||
expect(renameFeedback.offset, 55);
|
||||
expect(renameFeedback.length, 4);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> test_feedback() {
|
||||
addTestFile('''
|
||||
class Test {}
|
||||
|
|
|
@ -619,6 +619,58 @@ void f(NewName t) {}
|
|||
''');
|
||||
}
|
||||
|
||||
Future<void> test_createChange_ExtensionElement_atDeclaration() async {
|
||||
await indexTestUnit('''
|
||||
extension Test on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
Test(0).foo();
|
||||
}
|
||||
''');
|
||||
// configure refactoring
|
||||
createRenameRefactoringAtString('Test on int');
|
||||
expect(refactoring.refactoringName, 'Rename Extension');
|
||||
expect(refactoring.elementKindName, 'extension');
|
||||
expect(refactoring.oldName, 'Test');
|
||||
refactoring.newName = 'NewName';
|
||||
// validate change
|
||||
return assertSuccessfulRefactoring('''
|
||||
extension NewName on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
NewName(0).foo();
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
Future<void> test_createChange_ExtensionElement_atReference() async {
|
||||
await indexTestUnit('''
|
||||
extension Test on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
Test(0).foo();
|
||||
}
|
||||
''');
|
||||
// configure refactoring
|
||||
createRenameRefactoringAtString('Test(0)');
|
||||
expect(refactoring.refactoringName, 'Rename Extension');
|
||||
expect(refactoring.elementKindName, 'extension');
|
||||
expect(refactoring.oldName, 'Test');
|
||||
refactoring.newName = 'NewName';
|
||||
// validate change
|
||||
return assertSuccessfulRefactoring('''
|
||||
extension NewName on int {
|
||||
void foo() {}
|
||||
}
|
||||
void f() {
|
||||
NewName(0).foo();
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
Future<void> test_createChange_FunctionElement() async {
|
||||
await indexTestUnit('''
|
||||
test() {}
|
||||
|
|
Loading…
Reference in a new issue