Move: Do not process 'super' references
#KT-6769 Fixed
This commit is contained in:
+2
-2
@@ -65,7 +65,7 @@ import com.intellij.util.VisibilityUtil
|
|||||||
import com.intellij.openapi.util.Ref
|
import com.intellij.openapi.util.Ref
|
||||||
import org.jetbrains.kotlin.idea.search.projectScope
|
import org.jetbrains.kotlin.idea.search.projectScope
|
||||||
import org.jetbrains.kotlin.idea.refactoring.move.getInternalReferencesToUpdateOnPackageNameChange
|
import org.jetbrains.kotlin.idea.refactoring.move.getInternalReferencesToUpdateOnPackageNameChange
|
||||||
import org.jetbrains.kotlin.idea.refactoring.move.createMoveUsageInfo
|
import org.jetbrains.kotlin.idea.refactoring.move.createMoveUsageInfoIfPossible
|
||||||
import org.jetbrains.kotlin.idea.refactoring.move.postProcessMoveUsages
|
import org.jetbrains.kotlin.idea.refactoring.move.postProcessMoveUsages
|
||||||
import org.jetbrains.kotlin.idea.references.JetSimpleNameReference.ShorteningMode
|
import org.jetbrains.kotlin.idea.references.JetSimpleNameReference.ShorteningMode
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||||
@@ -127,7 +127,7 @@ public class MoveKotlinTopLevelDeclarationsProcessor(
|
|||||||
.search(lightElement, projectScope, false)
|
.search(lightElement, projectScope, false)
|
||||||
.mapTo(ArrayList<UsageInfo?>()) { ref ->
|
.mapTo(ArrayList<UsageInfo?>()) { ref ->
|
||||||
if (foundReferences.add(ref) && elementsToMove.all { !it.isAncestor(ref.getElement())}) {
|
if (foundReferences.add(ref) && elementsToMove.all { !it.isAncestor(ref.getElement())}) {
|
||||||
createMoveUsageInfo(ref, lightElement, true)
|
createMoveUsageInfoIfPossible(ref, lightElement, true)
|
||||||
}
|
}
|
||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
|
|||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||||
import org.jetbrains.kotlin.asJava.*
|
import org.jetbrains.kotlin.asJava.*
|
||||||
|
import org.jetbrains.kotlin.psi.JetSuperExpression
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||||
|
|
||||||
public class PackageNameInfo(val oldPackageName: FqName, val newPackageName: FqName)
|
public class PackageNameInfo(val oldPackageName: FqName, val newPackageName: FqName)
|
||||||
|
|
||||||
@@ -111,7 +113,7 @@ public fun JetElement.getInternalReferencesToUpdateOnPackageNameChange(packageNa
|
|||||||
packageName == packageNameInfo.oldPackageName,
|
packageName == packageNameInfo.oldPackageName,
|
||||||
packageName == packageNameInfo.newPackageName,
|
packageName == packageNameInfo.newPackageName,
|
||||||
isImported(descriptor) -> {
|
isImported(descriptor) -> {
|
||||||
(refExpr.getReference() as? JetSimpleNameReference)?.let { createMoveUsageInfo(it, declaration, false) }
|
(refExpr.getReference() as? JetSimpleNameReference)?.let { createMoveUsageInfoIfPossible(it, declaration, false) }
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> null
|
else -> null
|
||||||
@@ -141,13 +143,15 @@ class MoveRenameUsageInfoForExtension(
|
|||||||
val addImportToOriginalFile: Boolean
|
val addImportToOriginalFile: Boolean
|
||||||
): MoveRenameUsageInfo(element, reference, startOffset, endOffset, referencedElement, false)
|
): MoveRenameUsageInfo(element, reference, startOffset, endOffset, referencedElement, false)
|
||||||
|
|
||||||
fun createMoveUsageInfo(
|
fun createMoveUsageInfoIfPossible(
|
||||||
reference: PsiReference,
|
reference: PsiReference,
|
||||||
referencedElement: PsiElement,
|
referencedElement: PsiElement,
|
||||||
addImportToOriginalFile: Boolean
|
addImportToOriginalFile: Boolean
|
||||||
): UsageInfo {
|
): UsageInfo? {
|
||||||
val range = reference.getRangeInElement()!!
|
|
||||||
val element = reference.getElement()
|
val element = reference.getElement()
|
||||||
|
if (element.getStrictParentOfType<JetSuperExpression>() != null) return null
|
||||||
|
|
||||||
|
val range = reference.getRangeInElement()!!
|
||||||
val startOffset = range.getStartOffset()
|
val startOffset = range.getStartOffset()
|
||||||
val endOffset = range.getEndOffset()
|
val endOffset = range.getEndOffset()
|
||||||
|
|
||||||
|
|||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
package a
|
||||||
|
|
||||||
|
open class A {
|
||||||
|
fun foo() {}
|
||||||
|
}
|
||||||
|
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
package b
|
||||||
|
|
||||||
|
import a.A
|
||||||
|
|
||||||
|
open class B : A() {
|
||||||
|
fun t() {
|
||||||
|
super.foo()
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
package b
|
||||||
|
|
||||||
|
class C: B() {
|
||||||
|
fun test() {
|
||||||
|
super.t()
|
||||||
|
}
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
package a
|
||||||
|
|
||||||
|
open class A {
|
||||||
|
fun foo() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
open class <caret>B : A() {
|
||||||
|
fun t() {
|
||||||
|
super.foo()
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
package b
|
||||||
|
|
||||||
|
class C: a.B() {
|
||||||
|
fun test() {
|
||||||
|
super.t()
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"mainFile": "a/main.kt",
|
||||||
|
"type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS",
|
||||||
|
"targetPackage": "b"
|
||||||
|
}
|
||||||
@@ -282,6 +282,12 @@ public class JetMoveTestGenerated extends AbstractJetMoveTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kotlin/moveTopLevelDeclarations/misc/superReferences/superReferences.test")
|
||||||
|
public void testKotlin_moveTopLevelDeclarations_misc_superReferences_SuperReferences() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/superReferences/superReferences.test");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kotlin/moveTopLevelDeclarations/misc/syntheticMembers/syntheticMembers.test")
|
@TestMetadata("kotlin/moveTopLevelDeclarations/misc/syntheticMembers/syntheticMembers.test")
|
||||||
public void testKotlin_moveTopLevelDeclarations_misc_syntheticMembers_SyntheticMembers() throws Exception {
|
public void testKotlin_moveTopLevelDeclarations_misc_syntheticMembers_SyntheticMembers() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/syntheticMembers/syntheticMembers.test");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/syntheticMembers/syntheticMembers.test");
|
||||||
|
|||||||
Reference in New Issue
Block a user