From b46784ab86b4e71cec4e13a70f504d6133d3a857 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 5 Dec 2017 15:45:53 +0300 Subject: [PATCH] Safe Delete: Suppress walking through light field initializer This fixes some tests failing in 173 branch #KT-21508 Fixed --- .../safeDelete/KotlinSafeDeleteProcessor.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 }