diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt index 3f38ee771ab..82c708ebb54 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt @@ -519,12 +519,5 @@ class SafeDeleteFix(declaration: KtDeclaration) : LocalQuickFix { } 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) } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt index 993215cfe81..7b944cfa4a3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt @@ -54,10 +54,7 @@ import org.jetbrains.kotlin.idea.util.liftToExpected import org.jetbrains.kotlin.idea.util.runOnExpectAndAllActuals import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType -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.psi.psiUtil.* import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.utils.SmartSet @@ -131,6 +128,11 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { 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) } diff --git a/idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject3.kt b/idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject3.kt new file mode 100644 index 00000000000..21c0f71d91d --- /dev/null +++ b/idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject3.kt @@ -0,0 +1,7 @@ +import TestClass.NamedObject + +class TestClass{ + private object NamedObject { + const val CONST = "abc" + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject3.kt.after b/idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject3.kt.after new file mode 100644 index 00000000000..85850bd5ba0 --- /dev/null +++ b/idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/nestedObject3.kt.after @@ -0,0 +1,2 @@ +class TestClass{ +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java index f1cc21af1b9..a3ff6797a9e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java @@ -190,6 +190,11 @@ public class SafeDeleteTestGenerated extends AbstractSafeDeleteTest { 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") public void testNoUsages() throws Exception { runTest("idea/testData/refactoring/safeDelete/deleteObject/kotlinObject/noUsages.kt");