Change Signature: move lambda outside of parentheses if the arguments are reordered so that the lambda goes last
#KT-30128 Fixed
This commit is contained in:
committed by
klunnii
parent
912fd556e5
commit
82d81d5223
+9
@@ -31,11 +31,14 @@ import com.intellij.usageView.UsageViewDescriptor
|
|||||||
import com.intellij.util.containers.MultiMap
|
import com.intellij.util.containers.MultiMap
|
||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedRefactoringRequests
|
import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedRefactoringRequests
|
||||||
|
import org.jetbrains.kotlin.idea.core.canMoveLambdaOutsideParentheses
|
||||||
|
import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParentheses
|
||||||
import org.jetbrains.kotlin.idea.refactoring.broadcastRefactoringExit
|
import org.jetbrains.kotlin.idea.refactoring.broadcastRefactoringExit
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinFunctionCallUsage
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinFunctionCallUsage
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinImplicitReceiverUsage
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinImplicitReceiverUsage
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinUsageInfo
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinUsageInfo
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinWrapperForJavaUsageInfos
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinWrapperForJavaUsageInfos
|
||||||
|
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class KotlinChangeSignatureProcessor(
|
class KotlinChangeSignatureProcessor(
|
||||||
@@ -136,6 +139,12 @@ class KotlinChangeSignatureProcessor(
|
|||||||
override fun performRefactoring(usages: Array<out UsageInfo>) {
|
override fun performRefactoring(usages: Array<out UsageInfo>) {
|
||||||
try {
|
try {
|
||||||
super.performRefactoring(usages)
|
super.performRefactoring(usages)
|
||||||
|
usages.forEach {
|
||||||
|
val callExpression = it.element as? KtCallExpression ?: return@forEach
|
||||||
|
if (callExpression.canMoveLambdaOutsideParentheses()) {
|
||||||
|
callExpression.moveFunctionLiteralOutsideParentheses()
|
||||||
|
}
|
||||||
|
}
|
||||||
performDelayedRefactoringRequests(myProject)
|
performDelayedRefactoringRequests(myProject)
|
||||||
} finally {
|
} finally {
|
||||||
changeInfo.invalidate()
|
changeInfo.invalidate()
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
fun <caret>foo(y: Int, x: () -> Unit) {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo(1) { 2 }
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
fun <caret>foo(x: () -> Unit, y: Int) {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo({ 2 }, 1)
|
||||||
|
}
|
||||||
+2
@@ -1618,4 +1618,6 @@ class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() {
|
|||||||
addParameter(parameterInfo)
|
addParameter(parameterInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun testMoveLambdaParameterToLast() = doTest { swapParameters(0, 1) }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user