From 8d3296e08d7bd9d9601362fa49e4ca2d566b788d Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 21 Oct 2015 18:24:10 +0300 Subject: [PATCH] Change Signature: Search & process as-property usages of Java methods (This ixes some muted tests on Change Signature for properties). Improve test data --- .../JetChangeSignatureUsageProcessor.java | 21 ++++++++++- .../AddPropertyReceiverAfter.1.java | 11 +++--- .../AddPropertyReceiverAfter.kt | 29 +++++++++------ .../AddPropertyReceiverBefore.1.java | 11 +++--- .../AddPropertyReceiverBefore.kt | 27 +++++++++----- .../ChangeClassParameterAfter.1.java | 6 ++++ .../ChangeClassParameterAfter.kt | 16 +++++++-- .../ChangeClassParameterBefore.1.java | 6 ++++ .../ChangeClassParameterBefore.kt | 16 +++++++-- .../ChangePropertyAfter.1.java | 11 +++--- .../changeSignature/ChangePropertyAfter.kt | 35 ++++++++++++++----- .../ChangePropertyBefore.1.java | 11 +++--- .../changeSignature/ChangePropertyBefore.kt | 33 ++++++++++++----- .../ChangePropertyReceiverAfter.1.java | 11 +++--- .../ChangePropertyReceiverAfter.kt | 27 +++++++++----- .../ChangePropertyReceiverBefore.1.java | 11 +++--- .../ChangePropertyReceiverBefore.kt | 27 +++++++++----- .../JavaMethodOverridesReplaceParamAfter.1.kt | 6 ++-- ...JavaMethodOverridesReplaceParamBefore.1.kt | 6 ++-- .../RemovePropertyReceiverAfter.1.java | 11 +++--- .../RemovePropertyReceiverAfter.kt | 29 +++++++++------ .../RemovePropertyReceiverBefore.1.java | 11 +++--- .../RemovePropertyReceiverBefore.kt | 27 +++++++++----- 23 files changed, 283 insertions(+), 116 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index f6b990ffd69..e51286d32e8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -23,6 +23,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.SearchScope; +import com.intellij.psi.search.searches.MethodReferencesSearch; import com.intellij.psi.search.searches.OverridingMethodsSearch; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; @@ -59,6 +60,8 @@ import org.jetbrains.kotlin.idea.refactoring.CallableRefactoringKt; import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.*; import org.jetbrains.kotlin.idea.references.KtSimpleNameReference; import org.jetbrains.kotlin.idea.references.ReferenceUtilKt; +import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions; +import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters; import org.jetbrains.kotlin.idea.search.usagesSearch.UtilsKt; import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers; import org.jetbrains.kotlin.idea.util.ScopeUtils; @@ -253,6 +256,22 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro } } + private static Set findReferences(PsiElement functionPsi) { + Set result = new LinkedHashSet(); + + SearchScope searchScope = functionPsi.getUseScope(); + KotlinReferencesSearchOptions options = new KotlinReferencesSearchOptions(true, false, false, false); + KotlinReferencesSearchParameters parameters = new KotlinReferencesSearchParameters(functionPsi, searchScope, false, null, options); + result.addAll(ReferencesSearch.search(parameters).findAll()); + if (functionPsi instanceof KtProperty || functionPsi instanceof KtParameter) { + for (PsiMethod lightMethod : LightClassUtilsKt.toLightMethods(functionPsi)) { + result.addAll(MethodReferencesSearch.search(lightMethod, searchScope, true).findAll()); + } + } + + return result; + } + private static void findOneMethodUsages( @NotNull final JetCallableDefinitionUsage functionUsageInfo, final JetChangeInfo changeInfo, @@ -267,7 +286,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro PsiElement functionPsi = functionUsageInfo.getElement(); if (functionPsi == null) return; - for (PsiReference reference : ReferencesSearch.search(functionPsi, functionPsi.getUseScope())) { + for (PsiReference reference : findReferences(functionPsi)) { PsiElement element = reference.getElement(); if (functionPsi instanceof KtClass && reference.resolve() != functionPsi) continue; diff --git a/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.1.java b/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.1.java index 9af0f122297..17292121118 100644 --- a/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.1.java +++ b/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.1.java @@ -1,6 +1,6 @@ import java.lang.Override; -class J extends A { +public class J extends A { private int p; @Override @@ -17,12 +17,15 @@ class J extends A { class Test { static void test() { new A().getP(""); - new A().setP("", 1); + new A().setP("", 3); - new B().getP(""); - new B().setP("", 2); + new AA().getP(""); + new AA().setP("", 3); new J().getP(""); new J().setP("", 3); + + new B().getP(""); + new B().setP("", 3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.kt b/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.kt index fa1d413afa5..00849aca7fe 100644 --- a/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.kt +++ b/idea/testData/refactoring/changeSignature/AddPropertyReceiverAfter.kt @@ -1,26 +1,35 @@ public inline fun with(receiver: T, f: T.() -> R): R = receiver.f() open class A { - open var String.p: Int = 1 + open var String.p: Int = 1 } -class B: A() { - override var String.p: Int = 2 +class AA : A() { + override var String.p: Int = 1 +} + +class B : J() { + override var String.p: Int = 1 } fun test() { with(A()) { val t = "".p - "".p = 1 + "".p = 3 + } + + with(AA()) { + val t = "".p + "".p = 3 + } + + with(J()) { + val t = "".p + "".p = 3 } with(B()) { val t = "".p - "".p = 2 - } - - with(J()) { - val t = getP("") - setP("", 3) + "".p = 3 } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.1.java b/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.1.java index 8dd79bb216b..2372e581001 100644 --- a/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.1.java +++ b/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.1.java @@ -1,6 +1,6 @@ import java.lang.Override; -class J extends A { +public class J extends A { private int p; @Override @@ -17,12 +17,15 @@ class J extends A { class Test { static void test() { new A().getP(); - new A().setP(1); + new A().setP(3); - new B().getP(); - new B().setP(2); + new AA().getP(); + new AA().setP(3); new J().getP(); new J().setP(3); + + new B().getP(); + new B().setP(3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.kt b/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.kt index 9e209bcf45f..91ff2d398d3 100644 --- a/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.kt +++ b/idea/testData/refactoring/changeSignature/AddPropertyReceiverBefore.kt @@ -4,23 +4,32 @@ open class A { open var p: Int = 1 } -class B: A() { - override var p: Int = 2 +class AA : A() { + override var p: Int = 1 +} + +class B : J() { + override var p: Int = 1 } fun test() { with(A()) { val t = p - p = 1 + p = 3 + } + + with(AA()) { + val t = p + p = 3 + } + + with(J()) { + val t = p + p = 3 } with(B()) { val t = p - p = 2 - } - - with(J()) { - val t = getP() - setP(3) + p = 3 } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.1.java b/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.1.java index cc7c2eee483..55bc144734d 100644 --- a/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.1.java +++ b/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.1.java @@ -34,5 +34,11 @@ class Test { new J().getS(); new J().setS(4); + + new D().getS(); + new D().setS(5); + + new E().getS(); + new E().setS(6); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.kt b/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.kt index 4a3e1ee1c61..1f4c597252f 100644 --- a/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.kt +++ b/idea/testData/refactoring/changeSignature/ChangeClassParameterAfter.kt @@ -6,6 +6,12 @@ class C: A(0) { override var s: String = 1 } +class D(override var s: String) : J() + +class E : J() { + override var s: String = 1 +} + fun test() { val t1 = A(0).s A(0).s = 1 @@ -16,6 +22,12 @@ fun test() { val t3 = C().s C().s = 3 - val t4 = J().getS() - J().setS(4) + val t4 = J().s + J().s = 4 + + val t5 = D().s + D().s = 5 + + val t6 = E().s + E().s = 6 } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.1.java b/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.1.java index 8b02953c102..e94a73e02ea 100644 --- a/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.1.java +++ b/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.1.java @@ -31,5 +31,11 @@ class Test { new J().getP(); new J().setP(4); + + new D().getP(); + new D().setP(5); + + new E().getP(); + new E().setP(6); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.kt b/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.kt index 4d900d38252..66b5ab858ce 100644 --- a/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.kt +++ b/idea/testData/refactoring/changeSignature/ChangeClassParameterBefore.kt @@ -6,6 +6,12 @@ class C: A(0) { override var p: Int = 1 } +class D(override var s: String) : J() + +class E : J() { + override var s: String = 1 +} + fun test() { val t1 = A(0).p A(0).p = 1 @@ -16,6 +22,12 @@ fun test() { val t3 = C().p C().p = 3 - val t4 = J().getP() - J().setP(4) + val t4 = J().p + J().p = 4 + + val t5 = D().p + D().p = 5 + + val t6 = E().p + E().p = 6 } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyAfter.1.java b/idea/testData/refactoring/changeSignature/ChangePropertyAfter.1.java index a6ea52fd86f..0e0df72553c 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyAfter.1.java +++ b/idea/testData/refactoring/changeSignature/ChangePropertyAfter.1.java @@ -2,7 +2,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.Override; -class J extends A { +public class J extends A { private int p; @NotNull @@ -20,12 +20,15 @@ class J extends A { class Test { static void test() { new A().getS(); - new A().setS(1); + new A().setS(3); - new B().getS(); - new B().setS(2); + new AA().getS(); + new AA().setS(3); new J().getS(); new J().setS(3); + + new B().getS(); + new B().setS(3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyAfter.kt b/idea/testData/refactoring/changeSignature/ChangePropertyAfter.kt index df9f9e173de..f7b717b2fb5 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyAfter.kt +++ b/idea/testData/refactoring/changeSignature/ChangePropertyAfter.kt @@ -1,18 +1,35 @@ +public inline fun with(receiver: T, f: T.() -> R): R = receiver.f() + open class A { - open var s: String = 1 + open var s: String = 1 } -class B: A() { - override var s: String = 2 +class AA : A() { + override var s: String = 1 +} + +class B : J() { + override var s: String = 1 } fun test() { - val t1 = A().s - A().s = 1 + with(A()) { + val t = s + s = 3 + } - val t2 = B().s - B().s = 2 + with(AA()) { + val t = s + s = 3 + } - val t3 = J().getS() - J().setS(3) + with(J()) { + val t = s + s = 3 + } + + with(B()) { + val t = s + s = 3 + } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyBefore.1.java b/idea/testData/refactoring/changeSignature/ChangePropertyBefore.1.java index 8dd79bb216b..2372e581001 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyBefore.1.java +++ b/idea/testData/refactoring/changeSignature/ChangePropertyBefore.1.java @@ -1,6 +1,6 @@ import java.lang.Override; -class J extends A { +public class J extends A { private int p; @Override @@ -17,12 +17,15 @@ class J extends A { class Test { static void test() { new A().getP(); - new A().setP(1); + new A().setP(3); - new B().getP(); - new B().setP(2); + new AA().getP(); + new AA().setP(3); new J().getP(); new J().setP(3); + + new B().getP(); + new B().setP(3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyBefore.kt b/idea/testData/refactoring/changeSignature/ChangePropertyBefore.kt index 3ff85c27509..91ff2d398d3 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyBefore.kt +++ b/idea/testData/refactoring/changeSignature/ChangePropertyBefore.kt @@ -1,18 +1,35 @@ +public inline fun with(receiver: T, f: T.() -> R): R = receiver.f() + open class A { open var p: Int = 1 } -class B: A() { - override var p: Int = 2 +class AA : A() { + override var p: Int = 1 +} + +class B : J() { + override var p: Int = 1 } fun test() { - val t1 = A().p - A().p = 1 + with(A()) { + val t = p + p = 3 + } - val t2 = B().p - B().p = 2 + with(AA()) { + val t = p + p = 3 + } - val t3 = J().getP() - J().setP(3) + with(J()) { + val t = p + p = 3 + } + + with(B()) { + val t = p + p = 3 + } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.1.java b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.1.java index 6953ccbb4c9..1e16e0c4b41 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.1.java +++ b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.1.java @@ -1,6 +1,6 @@ import java.lang.Override; -class J extends A { +public class J extends A { private int p; @Override @@ -17,12 +17,15 @@ class J extends A { class Test { static void test() { new A().getP(""); - new A().setP("", 1); + new A().setP("", 3); - new B().getP(""); - new B().setP("", 2); + new AA().getP(""); + new AA().setP("", 3); new J().getP(""); new J().setP("", 3); + + new B().getP(""); + new B().setP("", 3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.kt b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.kt index 430766d4d34..25db53affdd 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.kt +++ b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverAfter.kt @@ -4,23 +4,32 @@ open class A { open var Int.p: Int = 1 } -class B: A() { - override var Int.p: Int = 2 +class AA : A() { + override var Int.p: Int = 1 +} + +class B : J() { + override var Int.p: Int = 1 } fun test() { with(A()) { val t = "".p - "".p = 1 + "".p = 3 + } + + with(AA()) { + val t = "".p + "".p = 3 + } + + with(J()) { + val t = "".p + "".p = 3 } with(B()) { val t = "".p - "".p = 2 - } - - with(J()) { - val t = getP("") - setP("", 3) + "".p = 3 } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.1.java b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.1.java index 9af0f122297..17292121118 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.1.java +++ b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.1.java @@ -1,6 +1,6 @@ import java.lang.Override; -class J extends A { +public class J extends A { private int p; @Override @@ -17,12 +17,15 @@ class J extends A { class Test { static void test() { new A().getP(""); - new A().setP("", 1); + new A().setP("", 3); - new B().getP(""); - new B().setP("", 2); + new AA().getP(""); + new AA().setP("", 3); new J().getP(""); new J().setP("", 3); + + new B().getP(""); + new B().setP("", 3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.kt b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.kt index 8871d02caf6..ce2ebcfbcb3 100644 --- a/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.kt +++ b/idea/testData/refactoring/changeSignature/ChangePropertyReceiverBefore.kt @@ -4,23 +4,32 @@ open class A { open var String.p: Int = 1 } -class B: A() { - override var String.p: Int = 2 +class AA : A() { + override var String.p: Int = 1 +} + +class B : J() { + override var String.p: Int = 1 } fun test() { with(A()) { val t = "".p - "".p = 1 + "".p = 3 + } + + with(AA()) { + val t = "".p + "".p = 3 + } + + with(J()) { + val t = "".p + "".p = 3 } with(B()) { val t = "".p - "".p = 2 - } - - with(J()) { - val t = getP("") - setP("", 3) + "".p = 3 } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamAfter.1.kt b/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamAfter.1.kt index 908245cc85e..96a212ac141 100644 --- a/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamAfter.1.kt +++ b/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamAfter.1.kt @@ -1,17 +1,17 @@ open class X: A() { - fun foo(x: Int): String? { + override fun foo(x: Int): String? { return super.foo(1) + 1 } } open class Y: B() { - fun foo(x: Int): String? { + override fun foo(x: Int): String? { return s.length * 2 } } open class Z: X() { - fun foo(x: Int): String? { + override fun foo(x: Int): String? { return s.length } } diff --git a/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamBefore.1.kt b/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamBefore.1.kt index f2c5044a5e8..a69f9e2ed31 100644 --- a/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamBefore.1.kt +++ b/idea/testData/refactoring/changeSignature/JavaMethodOverridesReplaceParamBefore.1.kt @@ -1,17 +1,17 @@ open class X: A() { - fun foo(s: String): Int { + override fun foo(s: String): Int { return super.foo(s) + 1 } } open class Y: B() { - fun foo(s: String): Int { + override fun foo(s: String): Int { return s.length * 2 } } open class Z: X() { - fun foo(s: String): Int { + override fun foo(s: String): Int { return s.length } } diff --git a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.1.java b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.1.java index 8dd79bb216b..2372e581001 100644 --- a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.1.java +++ b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.1.java @@ -1,6 +1,6 @@ import java.lang.Override; -class J extends A { +public class J extends A { private int p; @Override @@ -17,12 +17,15 @@ class J extends A { class Test { static void test() { new A().getP(); - new A().setP(1); + new A().setP(3); - new B().getP(); - new B().setP(2); + new AA().getP(); + new AA().setP(3); new J().getP(); new J().setP(3); + + new B().getP(); + new B().setP(3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.kt b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.kt index 9e209bcf45f..36b84eef02a 100644 --- a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.kt +++ b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverAfter.kt @@ -1,26 +1,35 @@ public inline fun with(receiver: T, f: T.() -> R): R = receiver.f() open class A { - open var p: Int = 1 + open var p: Int = 1 } -class B: A() { - override var p: Int = 2 +class AA : A() { + override var p: Int = 1 +} + +class B : J() { + override var p: Int = 1 } fun test() { with(A()) { val t = p - p = 1 + p = 3 + } + + with(AA()) { + val t = p + p = 3 + } + + with(J()) { + val t = p + p = 3 } with(B()) { val t = p - p = 2 - } - - with(J()) { - val t = getP() - setP(3) + p = 3 } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.1.java b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.1.java index 9af0f122297..17292121118 100644 --- a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.1.java +++ b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.1.java @@ -1,6 +1,6 @@ import java.lang.Override; -class J extends A { +public class J extends A { private int p; @Override @@ -17,12 +17,15 @@ class J extends A { class Test { static void test() { new A().getP(""); - new A().setP("", 1); + new A().setP("", 3); - new B().getP(""); - new B().setP("", 2); + new AA().getP(""); + new AA().setP("", 3); new J().getP(""); new J().setP("", 3); + + new B().getP(""); + new B().setP("", 3); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.kt b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.kt index 8871d02caf6..ce2ebcfbcb3 100644 --- a/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.kt +++ b/idea/testData/refactoring/changeSignature/RemovePropertyReceiverBefore.kt @@ -4,23 +4,32 @@ open class A { open var String.p: Int = 1 } -class B: A() { - override var String.p: Int = 2 +class AA : A() { + override var String.p: Int = 1 +} + +class B : J() { + override var String.p: Int = 1 } fun test() { with(A()) { val t = "".p - "".p = 1 + "".p = 3 + } + + with(AA()) { + val t = "".p + "".p = 3 + } + + with(J()) { + val t = "".p + "".p = 3 } with(B()) { val t = "".p - "".p = 2 - } - - with(J()) { - val t = getP("") - setP("", 3) + "".p = 3 } } \ No newline at end of file