Fix changing kotlin class usages in java while move refactoring
Fixed #KT-36114
This commit is contained in:
@@ -12,8 +12,8 @@ import com.intellij.openapi.util.Comparing
|
|||||||
import com.intellij.openapi.util.Key
|
import com.intellij.openapi.util.Key
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.refactoring.RefactoringBundle
|
import com.intellij.refactoring.RefactoringBundle
|
||||||
import com.intellij.refactoring.move.moveMembers.MockMoveMembersOptions
|
|
||||||
import com.intellij.refactoring.move.moveMembers.MoveMemberHandler
|
import com.intellij.refactoring.move.moveMembers.MoveMemberHandler
|
||||||
|
import com.intellij.refactoring.move.moveMembers.MoveMembersOptions
|
||||||
import com.intellij.refactoring.move.moveMembers.MoveMembersProcessor
|
import com.intellij.refactoring.move.moveMembers.MoveMembersProcessor
|
||||||
import com.intellij.refactoring.util.MoveRenameUsageInfo
|
import com.intellij.refactoring.util.MoveRenameUsageInfo
|
||||||
import com.intellij.refactoring.util.NonCodeUsageInfo
|
import com.intellij.refactoring.util.NonCodeUsageInfo
|
||||||
@@ -425,13 +425,21 @@ private fun updateJavaReference(reference: PsiReferenceExpression, oldElement: P
|
|||||||
|
|
||||||
val newClass = newElement.containingClass
|
val newClass = newElement.containingClass
|
||||||
if (newClass != null && reference.qualifierExpression != null) {
|
if (newClass != null && reference.qualifierExpression != null) {
|
||||||
val mockMoveMembersOptions = MockMoveMembersOptions(newClass.qualifiedName, arrayOf(newElement))
|
|
||||||
|
val refactoringOptions = object : MoveMembersOptions {
|
||||||
|
override fun getMemberVisibility(): String? = PsiModifier.PUBLIC
|
||||||
|
override fun makeEnumConstant(): Boolean = true
|
||||||
|
override fun getSelectedMembers(): Array<PsiMember> = arrayOf(newElement)
|
||||||
|
override fun getTargetClassName(): String? = newClass.qualifiedName
|
||||||
|
}
|
||||||
|
|
||||||
val moveMembersUsageInfo = MoveMembersProcessor.MoveMembersUsageInfo(
|
val moveMembersUsageInfo = MoveMembersProcessor.MoveMembersUsageInfo(
|
||||||
newElement, reference.element, newClass, reference.qualifierExpression, reference
|
newElement, reference.element, newClass, reference.qualifierExpression, reference
|
||||||
)
|
)
|
||||||
|
|
||||||
val moveMemberHandler = MoveMemberHandler.EP_NAME.forLanguage(reference.element.language)
|
val moveMemberHandler = MoveMemberHandler.EP_NAME.forLanguage(reference.element.language)
|
||||||
if (moveMemberHandler != null) {
|
if (moveMemberHandler != null) {
|
||||||
moveMemberHandler.changeExternalUsage(mockMoveMembersOptions, moveMembersUsageInfo)
|
moveMemberHandler.changeExternalUsage(refactoringOptions, moveMembersUsageInfo)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user