Rename: Update references to facade class when renaming file via matching top-level class
#KT-11903 Fixed (cherry picked from commit a1d9a25)
This commit is contained in:
@@ -254,6 +254,7 @@
|
|||||||
- [`KT-10033`](https://youtrack.jetbrains.com/issue/KT-10033) Qualify references to members of enum companions in case of conflict with enum entries
|
- [`KT-10033`](https://youtrack.jetbrains.com/issue/KT-10033) Qualify references to members of enum companions in case of conflict with enum entries
|
||||||
- [`KT-10713`](https://youtrack.jetbrains.com/issue/KT-10713) Skip read-only declarations when renaming parameters
|
- [`KT-10713`](https://youtrack.jetbrains.com/issue/KT-10713) Skip read-only declarations when renaming parameters
|
||||||
- [`KT-10687`](https://youtrack.jetbrains.com/issue/KT-10687) Qualify property references to avoid shadowing by parameters
|
- [`KT-10687`](https://youtrack.jetbrains.com/issue/KT-10687) Qualify property references to avoid shadowing by parameters
|
||||||
|
- [`KT-11903`](https://youtrack.jetbrains.com/issue/KT-11903) Update references to facade class when renaming file via matching top-level class
|
||||||
- [`KT-12411`](https://youtrack.jetbrains.com/issue/KT-12411) Fix package name quotation in Move refactoring
|
- [`KT-12411`](https://youtrack.jetbrains.com/issue/KT-12411) Fix package name quotation in Move refactoring
|
||||||
- [`KT-12543`](https://youtrack.jetbrains.com/issue/KT-12543) Qualify property references with 'this' to avoid renaming conflicts
|
- [`KT-12543`](https://youtrack.jetbrains.com/issue/KT-12543) Qualify property references with 'this' to avoid renaming conflicts
|
||||||
- [`KT-12732`](https://youtrack.jetbrains.com/issue/KT-12732) Copy default parameter values to overriding function which is renamed by Java reference while its base function is unchanged
|
- [`KT-12732`](https://youtrack.jetbrains.com/issue/KT-12732) Copy default parameter values to overriding function which is renamed by Java reference while its base function is unchanged
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ abstract class LightClassDataProvider<T : WithFileStubAndExtraDiagnostics>(
|
|||||||
abstract val isLocal: Boolean
|
abstract val isLocal: Boolean
|
||||||
|
|
||||||
override fun compute(): CachedValueProvider.Result<T>? {
|
override fun compute(): CachedValueProvider.Result<T>? {
|
||||||
|
if (files.isEmpty()) return null
|
||||||
return CachedValueProvider.Result.create(
|
return CachedValueProvider.Result.create(
|
||||||
computeLightClassData(),
|
computeLightClassData(),
|
||||||
if (isLocal) PsiModificationTracker.MODIFICATION_COUNT else PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT
|
if (isLocal) PsiModificationTracker.MODIFICATION_COUNT else PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiReference
|
import com.intellij.psi.PsiReference
|
||||||
import com.intellij.refactoring.JavaRefactoringSettings
|
import com.intellij.refactoring.JavaRefactoringSettings
|
||||||
import com.intellij.refactoring.listeners.RefactoringElementListener
|
import com.intellij.refactoring.listeners.RefactoringElementListener
|
||||||
|
import com.intellij.refactoring.rename.RenamePsiElementProcessor
|
||||||
import com.intellij.usageView.UsageInfo
|
import com.intellij.usageView.UsageInfo
|
||||||
import org.jetbrains.kotlin.asJava.KtLightClass
|
import org.jetbrains.kotlin.asJava.KtLightClass
|
||||||
import org.jetbrains.kotlin.asJava.KtLightClassForExplicitDeclaration
|
import org.jetbrains.kotlin.asJava.KtLightClassForExplicitDeclaration
|
||||||
@@ -69,7 +70,9 @@ class RenameKotlinClassProcessor : RenameKotlinPsiProcessor() {
|
|||||||
if (virtualFile != null) {
|
if (virtualFile != null) {
|
||||||
val nameWithoutExtensions = virtualFile.nameWithoutExtension
|
val nameWithoutExtensions = virtualFile.nameWithoutExtension
|
||||||
if (nameWithoutExtensions == classOrObject.name) {
|
if (nameWithoutExtensions == classOrObject.name) {
|
||||||
allRenames.put(file, newName + "." + virtualFile.extension)
|
val newFileName = newName + "." + virtualFile.extension
|
||||||
|
allRenames.put(file, newFileName)
|
||||||
|
RenamePsiElementProcessor.forElement(file).prepareRenaming(file, newFileName, allRenames)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package foo
|
||||||
|
|
||||||
|
class TopLevel2 {}
|
||||||
|
fun topMe() {}
|
||||||
Vendored
+7
@@ -0,0 +1,7 @@
|
|||||||
|
package foo;
|
||||||
|
|
||||||
|
public class TopUser {
|
||||||
|
public void use() {
|
||||||
|
TopLevel2Kt.topMe();
|
||||||
|
}
|
||||||
|
}
|
||||||
Vendored
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package foo
|
||||||
|
|
||||||
|
class /*rename*/TopLevel {}
|
||||||
|
fun topMe() {}
|
||||||
Vendored
+7
@@ -0,0 +1,7 @@
|
|||||||
|
package foo;
|
||||||
|
|
||||||
|
public class TopUser {
|
||||||
|
public void use() {
|
||||||
|
TopLevelKt.topMe();
|
||||||
|
}
|
||||||
|
}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"type": "MARKED_ELEMENT",
|
||||||
|
"mainFile": "foo/TopLevel.kt",
|
||||||
|
"newName": "TopLevel2",
|
||||||
|
"withRuntime": "true"
|
||||||
|
}
|
||||||
@@ -515,6 +515,12 @@ public class RenameTestGenerated extends AbstractRenameTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("renameKotlinFacadeClassViaTopLevelClass/renameKotlinFacadeClassViaTopLevelClass.test")
|
||||||
|
public void testRenameKotlinFacadeClassViaTopLevelClass_RenameKotlinFacadeClassViaTopLevelClass() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinFacadeClassViaTopLevelClass/renameKotlinFacadeClassViaTopLevelClass.test");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("renameKotlinFacadeClassWithDefaultNameAndCommentsByRef/renameKotlinFacadeClassWithDefaultNameByRef.test")
|
@TestMetadata("renameKotlinFacadeClassWithDefaultNameAndCommentsByRef/renameKotlinFacadeClassWithDefaultNameByRef.test")
|
||||||
public void testRenameKotlinFacadeClassWithDefaultNameAndCommentsByRef_RenameKotlinFacadeClassWithDefaultNameByRef() throws Exception {
|
public void testRenameKotlinFacadeClassWithDefaultNameAndCommentsByRef_RenameKotlinFacadeClassWithDefaultNameByRef() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinFacadeClassWithDefaultNameAndCommentsByRef/renameKotlinFacadeClassWithDefaultNameByRef.test");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinFacadeClassWithDefaultNameAndCommentsByRef/renameKotlinFacadeClassWithDefaultNameByRef.test");
|
||||||
|
|||||||
Reference in New Issue
Block a user