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 0b27499d0c7..19f497ec762 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt @@ -35,6 +35,8 @@ import com.intellij.refactoring.safeDelete.usageInfo.SafeDeleteReferenceSimpleDe import com.intellij.usageView.UsageInfo import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.asJava.* +import org.jetbrains.kotlin.asJava.elements.KtLightField +import org.jetbrains.kotlin.asJava.elements.KtLightFieldImpl import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.idea.KotlinBundle @@ -134,7 +136,15 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { fun findUsagesByJavaProcessor(element: PsiElement, forceReferencedElementUnwrapping: Boolean): NonCodeUsageSearchInfo? { val javaUsages = ArrayList() - val searchInfo = super.findUsages(element, asLightElements(allElementsToDelete), javaUsages) + + val elementToPassToJava = when (element) { + is KtLightFieldImpl<*> -> object : KtLightField by element { + // Suppress walking through initializer compiled PSI (it doesn't contain any reference expressions anyway) + override fun getInitializer() = null + } + else -> element + } + val searchInfo = super.findUsages(elementToPassToJava, asLightElements(allElementsToDelete), javaUsages) javaUsages.filterIsInstance().mapNotNullTo(deleteSet) { it.element }