Safe Delete: Fixed usages search when applied to simple enum entries

#KT-11816 Fixed
This commit is contained in:
Alexey Sedunov
2016-04-20 11:44:06 +03:00
parent b35834dd18
commit 613a274c90
6 changed files with 18 additions and 1 deletions
+1
View File
@@ -34,6 +34,7 @@ Issues fixed:
- [KT-8817](https://youtrack.jetbrains.com/issue/KT-8817) Fixed rename of Java getters/setters through synthetic property references in Kotlin
- [KT-11617](https://youtrack.jetbrains.com/issue/KT-11617) Fixed title of Introduce Parameter declaration chooser
- [KT-11817](https://youtrack.jetbrains.com/issue/KT-11817) Fixed rename of Kotlin enum constants through Java references
- [KT-11816](https://youtrack.jetbrains.com/issue/KT-11816) Fixed usages search for Safe Delete on simple enum entries
#### Debugger
@@ -80,7 +80,7 @@ object LightClassUtil {
return extractPropertyAccessors(property, getterWrapper, setterWrapper)
}
private fun getLightClassBackingField(declaration: KtDeclaration): PsiField? {
fun getLightClassBackingField(declaration: KtDeclaration): PsiField? {
var psiClass: PsiClass = getWrappingClass(declaration) ?: return null
if (psiClass is KtLightClass) {
@@ -185,6 +185,10 @@ 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)
@@ -0,0 +1,5 @@
enum class EnumTarget { <caret>RED, GREEN, BLUE }
fun refer(p: EnumTarget) {
println(p == EnumTarget.RED)
}
@@ -0,0 +1 @@
class EnumTarget.RED has 1 usage that is not safe to delete.
@@ -67,6 +67,12 @@ public class SafeDeleteTestGenerated extends AbstractSafeDeleteTest {
doClassTest(fileName);
}
@TestMetadata("enumEntry.kt")
public void testEnumEntry() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/safeDelete/deleteClass/kotlinClass/enumEntry.kt");
doClassTest(fileName);
}
@TestMetadata("localClass1.kt")
public void testLocalClass1() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/safeDelete/deleteClass/kotlinClass/localClass1.kt");