Pull Members Up: Use light field if property doesnt't have light methods
#KT-10552 Fixed
This commit is contained in:
@@ -20,6 +20,7 @@ import com.intellij.psi.PsiMember
|
|||||||
import com.intellij.refactoring.RefactoringBundle
|
import com.intellij.refactoring.RefactoringBundle
|
||||||
import com.intellij.refactoring.classMembers.MemberInfoBase
|
import com.intellij.refactoring.classMembers.MemberInfoBase
|
||||||
import com.intellij.refactoring.util.classMembers.MemberInfo
|
import com.intellij.refactoring.util.classMembers.MemberInfo
|
||||||
|
import org.jetbrains.kotlin.asJava.LightClassUtil
|
||||||
import org.jetbrains.kotlin.asJava.getRepresentativeLightMethod
|
import org.jetbrains.kotlin.asJava.getRepresentativeLightMethod
|
||||||
import org.jetbrains.kotlin.asJava.toLightClass
|
import org.jetbrains.kotlin.asJava.toLightClass
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
@@ -69,7 +70,8 @@ class KotlinMemberInfo(member: KtNamedDeclaration, val isSuperClass: Boolean = f
|
|||||||
fun KotlinMemberInfo.toJavaMemberInfo(): MemberInfo? {
|
fun KotlinMemberInfo.toJavaMemberInfo(): MemberInfo? {
|
||||||
val declaration = member
|
val declaration = member
|
||||||
val psiMember: PsiMember? = when (declaration) {
|
val psiMember: PsiMember? = when (declaration) {
|
||||||
is KtNamedFunction, is KtProperty -> declaration.getRepresentativeLightMethod()
|
is KtNamedFunction -> declaration.getRepresentativeLightMethod()
|
||||||
|
is KtProperty -> declaration.getRepresentativeLightMethod() ?: LightClassUtil.getLightClassPropertyMethods(declaration).backingField
|
||||||
is KtClassOrObject -> declaration.toLightClass()
|
is KtClassOrObject -> declaration.toLightClass()
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
open class Temp1
|
||||||
|
open class <caret>Temp2 : Temp1() {
|
||||||
|
// INFO: {"checked": "true"}
|
||||||
|
private val used: Int = 1
|
||||||
|
// INFO: {"checked": "false"}
|
||||||
|
private val using: Int = used + 1
|
||||||
|
}
|
||||||
|
class Temp3 : Temp2()
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
open class Temp1 {
|
||||||
|
// INFO: {"checked": "true"}
|
||||||
|
protected val used: Int = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
open class Temp2 : Temp1() {
|
||||||
|
// INFO: {"checked": "false"}
|
||||||
|
private val using: Int = used + 1
|
||||||
|
}
|
||||||
|
class Temp3 : Temp2()
|
||||||
@@ -205,6 +205,12 @@ public class PullUpTestGenerated extends AbstractPullUpTest {
|
|||||||
doKotlinTest(fileName);
|
doKotlinTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("propertyWithoutLightMethod.kt")
|
||||||
|
public void testPropertyWithoutLightMethod() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pullUp/k2k/propertyWithoutLightMethod.kt");
|
||||||
|
doKotlinTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("publicToInterface.kt")
|
@TestMetadata("publicToInterface.kt")
|
||||||
public void testPublicToInterface() throws Exception {
|
public void testPublicToInterface() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pullUp/k2k/publicToInterface.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pullUp/k2k/publicToInterface.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user