Forbid safe delete action if target element is a property setter parameter
This commit is contained in:
+5
-2
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user