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 2c37c194652..2c064c68dd1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt @@ -135,10 +135,11 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { ReferencesSearch.search(declaration, declaration.useScope) .asSequence() .filterNot { reference -> getIgnoranceCondition().value(reference.element) } - .mapTo(usages) { reference -> - reference.element.getNonStrictParentOfType()?.let { importDirective -> + .mapNotNullTo(usages) { reference -> + val refElement = reference.element ?: return@mapNotNullTo null + refElement.getNonStrictParentOfType()?.let { importDirective -> SafeDeleteImportDirectiveUsageInfo(importDirective, element) - } ?: SafeDeleteReferenceSimpleDeleteUsageInfo(element, declaration, false) + } ?: SafeDeleteReferenceSimpleDeleteUsageInfo(refElement, declaration, false) } return getSearchInfo(declaration) @@ -185,10 +186,6 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { return when (element) { is KtClassOrObject -> { - if (element is KtEnumEntry) { - LightClassUtil.getLightClassBackingField(element)?.let { findUsagesByJavaProcessor(it, false) } - } - element.toLightClass()?.let { klass -> findDelegationCallUsages(klass) findUsagesByJavaProcessor(klass, false) diff --git a/idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/localVar.kt b/idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/localVar.kt new file mode 100644 index 00000000000..e8cb709a933 --- /dev/null +++ b/idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/localVar.kt @@ -0,0 +1,7 @@ +package test + +fun foo() { + val x = 1 + println(x) + println(x) +} \ No newline at end of file diff --git a/idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/localVar.kt.messages b/idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/localVar.kt.messages new file mode 100644 index 00000000000..5744eb56354 --- /dev/null +++ b/idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/localVar.kt.messages @@ -0,0 +1 @@ +variable test.foo.x has 2 usages that are not safe to delete. \ No newline at end of file diff --git a/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt.messages b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt.messages index fc4b548342b..a28d4719f89 100644 --- a/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt.messages +++ b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt.messages @@ -1 +1 @@ -type alias MyString has 1 usage that is not safe to delete. \ No newline at end of file +type alias MyString has 2 usages that are not safe to delete. \ 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 74228b6e08c..4748e1f1f68 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java @@ -503,6 +503,12 @@ public class SafeDeleteTestGenerated extends AbstractSafeDeleteTest { doPropertyTest(fileName); } + @TestMetadata("localVar.kt") + public void testLocalVar() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/localVar.kt"); + doPropertyTest(fileName); + } + @TestMetadata("noUsages.kt") public void testNoUsages() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/safeDelete/deleteProperty/kotlinProperty/noUsages.kt");