Rename: Support automatic test renaming for facade files
#KT-10578 Fixed (cherry picked from commit 35050f4)
This commit is contained in:
+9
-5
@@ -21,15 +21,17 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.refactoring.rename.naming.AutomaticRenamer
|
||||
import com.intellij.refactoring.rename.naming.AutomaticTestRenamerFactory
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import org.jetbrains.kotlin.asJava.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.asJava.*
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
class KotlinAutomaticTestRenamerFactory : AutomaticTestRenamerFactory() {
|
||||
private fun getPsiClass(element: PsiElement): PsiClass? {
|
||||
return when (element) {
|
||||
is KtLightClass -> element
|
||||
is KtLightClassForExplicitDeclaration -> element
|
||||
is KtClassOrObject -> element.toLightClass()
|
||||
is KtFile -> element.findFacadeClass()
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
@@ -39,7 +41,9 @@ class KotlinAutomaticTestRenamerFactory : AutomaticTestRenamerFactory() {
|
||||
return super.isApplicable(psiClass)
|
||||
}
|
||||
|
||||
override fun createRenamer(element: PsiElement, newName: String?, usages: MutableCollection<UsageInfo>): AutomaticRenamer {
|
||||
return super.createRenamer(getPsiClass(element)!!, newName, usages)
|
||||
override fun createRenamer(element: PsiElement, newName: String, usages: MutableCollection<UsageInfo>): AutomaticRenamer {
|
||||
val psiClass = getPsiClass(element)!!
|
||||
val newPsiClassName = if (psiClass is KtLightClassForFacade) PackagePartClassUtils.getFilePartShortName(newName) else newName
|
||||
return super.createRenamer(psiClass, newPsiClassName, usages)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user