diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt index 815c368679f..af98e0461d2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt @@ -26,11 +26,13 @@ import com.intellij.refactoring.memberPullUp.PullUpHelper import com.intellij.refactoring.util.DocCommentPolicy import com.intellij.refactoring.util.RefactoringUtil import com.intellij.refactoring.util.classMembers.MemberInfo +import com.intellij.util.VisibilityUtil import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet import org.jetbrains.kotlin.idea.core.getOrCreateCompanionObject import org.jetbrains.kotlin.idea.core.refactoring.j2k import org.jetbrains.kotlin.idea.core.refactoring.j2kText +import org.jetbrains.kotlin.idea.core.setVisibility import org.jetbrains.kotlin.idea.refactoring.safeDelete.removeOverrideModifier import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.load.java.JvmAbi @@ -142,6 +144,12 @@ public class JavaToKotlinPreconversionPullUpHelper( val targetClass = data.targetClass.unwrapped as? JetClass ?: return val convertedDeclaration = member.j2k() ?: return + if (member is PsiField || member is PsiMethod) { + val visibilityModifier = VisibilityUtil.getVisibilityModifier(member.modifierList) + if (visibilityModifier == PsiModifier.PROTECTED || visibilityModifier == PsiModifier.PACKAGE_LOCAL) { + convertedDeclaration.setVisibility(JetTokens.PUBLIC_KEYWORD) + } + } val newDeclaration = membersToDummyDeclarations[originalMember]?.replace(convertedDeclaration) as JetNamedDeclaration if (targetClass.isInterface()) { newDeclaration.removeModifier(JetTokens.ABSTRACT_KEYWORD) diff --git a/idea/testData/refactoring/pullUp/j2k/fromClassToClass.kt.after b/idea/testData/refactoring/pullUp/j2k/fromClassToClass.kt.after index e7fc45de86d..fc1d49a4808 100644 --- a/idea/testData/refactoring/pullUp/j2k/fromClassToClass.kt.after +++ b/idea/testData/refactoring/pullUp/j2k/fromClassToClass.kt.after @@ -1,6 +1,6 @@ abstract class A { // INFO: {"checked": "true"} - internal var x = 2 * 3 + var x = 2 * 3 // INFO: {"checked": "true"} internal inner class X @@ -9,19 +9,19 @@ abstract class A { internal class Y // INFO: {"checked": "true"} - internal fun foo(n: Int): Boolean { + fun foo(n: Int): Boolean { return n > 0 } // INFO: {"checked": "true"} - internal abstract fun bar(s: String): Int + abstract fun bar(s: String): Int companion object { // INFO: {"checked": "true"} - internal var X = "1" + "2" + var X = "1" + "2" // INFO: {"checked": "true"} - JvmStatic internal fun foo2(n: Int): String { + JvmStatic fun foo2(n: Int): String { return "_" + n + "_" } } diff --git a/idea/testData/refactoring/pullUp/j2k/fromClassToClassAndMakeAbstract.kt.after b/idea/testData/refactoring/pullUp/j2k/fromClassToClassAndMakeAbstract.kt.after index ee1c7df60b7..4eface2aa7e 100644 --- a/idea/testData/refactoring/pullUp/j2k/fromClassToClassAndMakeAbstract.kt.after +++ b/idea/testData/refactoring/pullUp/j2k/fromClassToClassAndMakeAbstract.kt.after @@ -1,6 +1,6 @@ abstract class A { // INFO: {"checked": "true", "toAbstract": "true"} - internal var x = 2 * 3 + var x = 2 * 3 // INFO: {"checked": "true", "toAbstract": "true"} internal inner class X @@ -9,17 +9,17 @@ abstract class A { internal class Y // INFO: {"checked": "true", "toAbstract": "true"} - internal abstract fun foo(n: Int): Boolean + abstract fun foo(n: Int): Boolean // INFO: {"checked": "true", "toAbstract": "true"} - internal abstract fun bar(s: String): Int + abstract fun bar(s: String): Int companion object { // INFO: {"checked": "true", "toAbstract": "true"} - internal var X = "1" + "2" + var X = "1" + "2" // INFO: {"checked": "true", "toAbstract": "true"} - JvmStatic internal fun foo2(n: Int): String { + JvmStatic fun foo2(n: Int): String { return "_" + n + "_" } } diff --git a/idea/testData/refactoring/pullUp/j2k/fromClassToClassWithGenerics.kt.after b/idea/testData/refactoring/pullUp/j2k/fromClassToClassWithGenerics.kt.after index be54f5d16bf..3e6dbdcab17 100644 --- a/idea/testData/refactoring/pullUp/j2k/fromClassToClassWithGenerics.kt.after +++ b/idea/testData/refactoring/pullUp/j2k/fromClassToClassWithGenerics.kt.after @@ -4,19 +4,19 @@ interface Z open class A { // INFO: {"checked": "true"} - internal var foo1: T + var foo1: T // INFO: {"checked": "true"} - internal var foo2: Z + var foo2: Z // INFO: {"checked": "true"} - internal var foo3: Any + var foo3: Any // INFO: {"checked": "true"} - internal var foo4: Z + var foo4: Z // INFO: {"checked": "true"} internal inner class Foo : A>(), Z // INFO: {"checked": "true"} - internal fun foo(x1: T, x2: Z, y1: Any, y2: Z, w1: I, w2: Z, s1: S, s2: Z) { + fun foo(x1: T, x2: Z, y1: Any, y2: Z, w1: I, w2: Z, s1: S, s2: Z) { } } \ No newline at end of file diff --git a/idea/testData/refactoring/pullUp/j2k/fromClassToInterface.kt.after b/idea/testData/refactoring/pullUp/j2k/fromClassToInterface.kt.after index 319bbb74747..4cc4a0b9e4e 100644 --- a/idea/testData/refactoring/pullUp/j2k/fromClassToInterface.kt.after +++ b/idea/testData/refactoring/pullUp/j2k/fromClassToInterface.kt.after @@ -3,19 +3,19 @@ interface A { internal class Y // INFO: {"checked": "true"} - internal fun foo(n: Int): Boolean { + fun foo(n: Int): Boolean { return n > 0 } // INFO: {"checked": "true"} - internal fun bar(s: String): Int + fun bar(s: String): Int companion object { // INFO: {"checked": "true"} - internal var X = "1" + "2" + var X = "1" + "2" // INFO: {"checked": "true"} - JvmStatic internal fun foo2(n: Int): String { + JvmStatic fun foo2(n: Int): String { return "_" + n + "_" } } diff --git a/idea/testData/refactoring/pullUp/j2k/fromClassToNestedClass.kt.after b/idea/testData/refactoring/pullUp/j2k/fromClassToNestedClass.kt.after index a16e23f7357..87e12b44363 100644 --- a/idea/testData/refactoring/pullUp/j2k/fromClassToNestedClass.kt.after +++ b/idea/testData/refactoring/pullUp/j2k/fromClassToNestedClass.kt.after @@ -2,7 +2,7 @@ class T { class U { abstract class A { // INFO: {"checked": "true"} - internal var x = 2 * 3 + var x = 2 * 3 // INFO: {"checked": "true"} internal inner class X @@ -11,19 +11,19 @@ class T { internal class Y // INFO: {"checked": "true"} - internal fun foo(n: Int): Boolean { + fun foo(n: Int): Boolean { return n > 0 } // INFO: {"checked": "true"} - internal abstract fun bar(s: String): Int + abstract fun bar(s: String): Int companion object { // INFO: {"checked": "true"} - internal var X = "1" + "2" + var X = "1" + "2" // INFO: {"checked": "true"} - JvmStatic internal fun foo2(n: Int): String { + JvmStatic fun foo2(n: Int): String { return "_" + n + "_" } }