Forbid safe delete action if target element is a property setter parameter

This commit is contained in:
Alexey Sedunov
2014-01-23 19:08:00 +04:00
parent 83c9c49125
commit 001d95f4b8
4 changed files with 36 additions and 2 deletions
@@ -59,12 +59,15 @@ import java.util.*;
public class KotlinSafeDeleteProcessor extends JavaSafeDeleteProcessor {
public static boolean canDeleteElement(@NotNull PsiElement element) {
if (PsiUtilPackage.isObjectLiteral(element)) return false;
if (element instanceof JetParameter) {
JetDeclaration declaration = PsiTreeUtil.getParentOfType(element, JetDeclaration.class);
return declaration != null && !(declaration instanceof JetPropertyAccessor && ((JetPropertyAccessor) declaration).isSetter());
}
return element instanceof JetClassOrObject
|| element instanceof JetNamedFunction
|| element instanceof PsiMethod
|| element instanceof JetProperty
|| element instanceof JetTypeParameter
|| element instanceof JetParameter;
|| element instanceof JetTypeParameter;
}
@Override
@@ -0,0 +1,13 @@
class A {
var foo: String
get() = "foo"
set(<caret>value: String) {
println()
}
}
class B {
fun bar(a: A) {
a.foo = "bar"
}
}
@@ -0,0 +1,13 @@
class A {
var foo: String
get() = "foo"
set(value: String) {
println()
}
}
class B {
fun bar(a: A) {
a.foo = "bar"
}
}
@@ -823,6 +823,11 @@ public class JetSafeDeleteTestGenerated extends AbstractJetSafeDeleteTest {
doValueParameterTest("idea/testData/safeDelete/deleteValueParameter/kotlinValueParameter/safeUsagesExt2.kt");
}
@TestMetadata("setter.kt")
public void testSetter() throws Exception {
doValueParameterTest("idea/testData/safeDelete/deleteValueParameter/kotlinValueParameter/setter.kt");
}
}
@TestMetadata("idea/testData/safeDelete/deleteValueParameter/kotlinValueParameterWithJava")