From 8e81d0ce5f79a3f1d7a93c8e9b318365f961bafa Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 8 Feb 2016 14:36:24 +0300 Subject: [PATCH] Change Signature: Skip implicit receiver references if extension receiver is dropped --- .../KotlinChangeSignatureUsageProcessor.kt | 4 +++- .../refactoring/changeSignature/RemoveReceiverAfter.kt | 6 +++--- .../changeSignature/RemoveReceiverBefore.1.java | 2 +- .../refactoring/changeSignature/RemoveReceiverBefore.kt | 8 ++++---- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt index d3d29f54e0c..aed613351a2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt @@ -370,7 +370,9 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor { val targetDescriptor = implicitReceiver.declarationDescriptor if (compareDescriptors(callElement.project, targetDescriptor, callableDescriptor)) { assert(originalReceiverInfo != null) { "No original receiver info provided: " + functionUsageInfo.declaration.text } - result.add(KotlinImplicitThisToParameterUsage(callElement, originalReceiverInfo!!, functionUsageInfo)) + if (originalReceiverInfo in changeInfo.getNonReceiverParameters()) { + result.add(KotlinImplicitThisToParameterUsage(callElement, originalReceiverInfo!!, functionUsageInfo)) + } } else { result.add(KotlinImplicitThisUsage(callElement, targetDescriptor)) diff --git a/idea/testData/refactoring/changeSignature/RemoveReceiverAfter.kt b/idea/testData/refactoring/changeSignature/RemoveReceiverAfter.kt index fa4b033913a..65335731217 100644 --- a/idea/testData/refactoring/changeSignature/RemoveReceiverAfter.kt +++ b/idea/testData/refactoring/changeSignature/RemoveReceiverAfter.kt @@ -1,11 +1,11 @@ fun foo(s: String, k: Int): Boolean { - return this.k + s.length - k > 0 + return this.k + s.length - k - l > 0 } -class X(val k: Int) +class X(val k: Int, val l: Int) fun test() { - with(X(0)) { + with(X(0, 1)) { foo("1", 2) } foo("1", 2) diff --git a/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.1.java b/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.1.java index 41897a4f0b7..f1580826b1c 100644 --- a/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.1.java +++ b/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.1.java @@ -1,5 +1,5 @@ class J { void test() { - RemoveReceiverBeforeKt.foo(new X(0), "1", 2); + RemoveReceiverBeforeKt.foo(new X(0, 1), "1", 2); } } \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.kt b/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.kt index cdd97a49a8e..91a94118600 100644 --- a/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.kt +++ b/idea/testData/refactoring/changeSignature/RemoveReceiverBefore.kt @@ -1,12 +1,12 @@ fun X.foo(s: String, k: Int): Boolean { - return this.k + s.length - k > 0 + return this.k + s.length - k - l > 0 } -class X(val k: Int) +class X(val k: Int, val l: Int) fun test() { - with(X(0)) { + with(X(0, 1)) { foo("1", 2) } - X(0).foo("1", 2) + X(0, 1).foo("1", 2) } \ No newline at end of file