Pull Members Up: Skip visibility checking between members to move

This commit is contained in:
Alexey Sedunov
2016-01-28 17:28:46 +03:00
parent f9632c1ad6
commit b0c808082f
5 changed files with 26 additions and 1 deletions
@@ -147,6 +147,7 @@ private fun KotlinPullUpData.checkVisibility(
conflicts: MultiMap<PsiElement, String>
) {
fun reportConflictIfAny(targetDescriptor: DeclarationDescriptor) {
if (targetDescriptor in memberDescriptors.values) return
val target = (targetDescriptor as? DeclarationDescriptorWithSource)?.source?.getPsi() ?: return
if (targetDescriptor is DeclarationDescriptorWithVisibility
&& !Visibilities.isVisibleWithIrrelevantReceiver(targetDescriptor, targetClassDescriptor)) {
@@ -6,7 +6,7 @@ class <caret>B: A() {
// INFO: {"checked": "false"}
private fun foo() = 1
// INFO: {"checked": "true"}
// INFO: {"checked": "false"}
private class Z(n: Int)
// INFO: {"checked": "true"}
@@ -0,0 +1,8 @@
open class Temp1
open class <caret>Temp2 : Temp1() {
// INFO: {"checked": "true"}
private val used: Int = 1
// INFO: {"checked": "true"}
private val using: Int = used + 1
}
class Temp3 : Temp2()
@@ -0,0 +1,10 @@
open class Temp1 {
// INFO: {"checked": "true"}
private val used: Int = 1
// INFO: {"checked": "true"}
private val using: Int = used + 1
}
open class Temp2 : Temp1() {
}
class Temp3 : Temp2()
@@ -181,6 +181,12 @@ public class PullUpTestGenerated extends AbstractPullUpTest {
doKotlinTest(fileName);
}
@TestMetadata("noVisibilityCheckBetweenMovedMembers.kt")
public void testNoVisibilityCheckBetweenMovedMembers() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pullUp/k2k/noVisibilityCheckBetweenMovedMembers.kt");
doKotlinTest(fileName);
}
@TestMetadata("outsideOfClass.kt")
public void testOutsideOfClass() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pullUp/k2k/outsideOfClass.kt");