From aef8028a9c7fee1e117b2fb2ef97f80a8585778f Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Thu, 30 Jan 2020 15:35:17 +0300 Subject: [PATCH] Fix changing kotlin class usages in java while move refactoring Fixed #KT-36114 --- .../kotlin/idea/refactoring/move/moveUtils.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt index 7e162cd4239..55c88bf5084 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -12,8 +12,8 @@ import com.intellij.openapi.util.Comparing import com.intellij.openapi.util.Key import com.intellij.psi.* 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.MoveMembersOptions import com.intellij.refactoring.move.moveMembers.MoveMembersProcessor import com.intellij.refactoring.util.MoveRenameUsageInfo import com.intellij.refactoring.util.NonCodeUsageInfo @@ -425,13 +425,21 @@ private fun updateJavaReference(reference: PsiReferenceExpression, oldElement: P val newClass = newElement.containingClass 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 = arrayOf(newElement) + override fun getTargetClassName(): String? = newClass.qualifiedName + } + val moveMembersUsageInfo = MoveMembersProcessor.MoveMembersUsageInfo( newElement, reference.element, newClass, reference.qualifierExpression, reference ) + val moveMemberHandler = MoveMemberHandler.EP_NAME.forLanguage(reference.element.language) if (moveMemberHandler != null) { - moveMemberHandler.changeExternalUsage(mockMoveMembersOptions, moveMembersUsageInfo) + moveMemberHandler.changeExternalUsage(refactoringOptions, moveMembersUsageInfo) return true } }