Add case for private nested class/object in KotlinSafeDeleteProcessor
This commit is contained in:
@@ -519,12 +519,5 @@ class SafeDeleteFix(declaration: KtDeclaration) : LocalQuickFix {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun safeDelete(project: Project, declaration: PsiElement) {
|
private fun safeDelete(project: Project, declaration: PsiElement) {
|
||||||
if (declaration is KtNamedDeclaration && declaration.isPrivateNestedClassOrObject) {
|
|
||||||
runWriteAction {
|
|
||||||
declaration.containingKtFile.importDirectives.forEach {
|
|
||||||
if (it.importedFqName == declaration.fqName) it.delete()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SafeDeleteHandler.invoke(project, arrayOf(declaration), false)
|
SafeDeleteHandler.invoke(project, arrayOf(declaration), false)
|
||||||
}
|
}
|
||||||
+6
-4
@@ -54,10 +54,7 @@ import org.jetbrains.kotlin.idea.util.liftToExpected
|
|||||||
import org.jetbrains.kotlin.idea.util.runOnExpectAndAllActuals
|
import org.jetbrains.kotlin.idea.util.runOnExpectAndAllActuals
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypeAndBranch
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.utils.SmartSet
|
import org.jetbrains.kotlin.utils.SmartSet
|
||||||
@@ -131,6 +128,11 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
|
|||||||
findKotlinParameterUsages(declaration)
|
findKotlinParameterUsages(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (declaration is KtNamedDeclaration && declaration.isPrivateNestedClassOrObject) {
|
||||||
|
declaration.containingKtFile.importDirectives.mapNotNullTo(usages) {
|
||||||
|
if (it.importedFqName == declaration.fqName) SafeDeleteImportDirectiveUsageInfo(it, declaration) else null
|
||||||
|
}
|
||||||
|
}
|
||||||
return getSearchInfo(declaration)
|
return getSearchInfo(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
import TestClass.NamedObject
|
||||||
|
|
||||||
|
class TestClass{
|
||||||
|
private object NamedObject<caret> {
|
||||||
|
const val CONST = "abc"
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
class TestClass{
|
||||||
|
}
|
||||||
+5
@@ -190,6 +190,11 @@ public class SafeDeleteTestGenerated extends AbstractSafeDeleteTest {
|
|||||||
runTest("idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject2.kt");
|
runTest("idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject2.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("nestedObject3.kt")
|
||||||
|
public void testNestedObject3() throws Exception {
|
||||||
|
runTest("idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("noUsages.kt")
|
@TestMetadata("noUsages.kt")
|
||||||
public void testNoUsages() throws Exception {
|
public void testNoUsages() throws Exception {
|
||||||
runTest("idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/noUsages.kt");
|
runTest("idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/noUsages.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user