diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveSingleLambdaParameterFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveSingleLambdaParameterFix.kt index 168dc8dcb27..81d4bb0e9ee 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveSingleLambdaParameterFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveSingleLambdaParameterFix.kt @@ -48,6 +48,9 @@ class RemoveSingleLambdaParameterFix(element: KtParameter) : KotlinQuickFixActio val lambda = parameterList.parent.parent as? KtLambdaExpression ?: return null + val lambdaParent = lambda.parent + if (lambdaParent is KtWhenEntry || lambdaParent is KtContainerNodeForControlStructureBody) return null + val property = lambda.getStrictParentOfType() if (property != null && property.typeReference == null) return null diff --git a/idea/testData/quickfix/removeSingleLambdaParameter/inIf.kt b/idea/testData/quickfix/removeSingleLambdaParameter/inIf.kt new file mode 100644 index 00000000000..92be3180486 --- /dev/null +++ b/idea/testData/quickfix/removeSingleLambdaParameter/inIf.kt @@ -0,0 +1,8 @@ +// "Remove single lambda parameter declaration" "false" +// ACTION: Add braces to 'if' statement +// ACTION: Remove explicit lambda parameter types (may break code) +// ACTION: Rename to _ +fun test(i: Int) { + val p: (String) -> Boolean = + if (i == 1) { s: String -> true } else { s: String -> false } +} \ No newline at end of file diff --git a/idea/testData/quickfix/removeSingleLambdaParameter/inIf2.kt b/idea/testData/quickfix/removeSingleLambdaParameter/inIf2.kt new file mode 100644 index 00000000000..48080665a41 --- /dev/null +++ b/idea/testData/quickfix/removeSingleLambdaParameter/inIf2.kt @@ -0,0 +1,5 @@ +// "Remove single lambda parameter declaration" "true" +fun test(i: Int) { + val p: (String) -> Boolean = + if (i == 1) { { s -> true } } else { s -> false } +} \ No newline at end of file diff --git a/idea/testData/quickfix/removeSingleLambdaParameter/inIf2.kt.after b/idea/testData/quickfix/removeSingleLambdaParameter/inIf2.kt.after new file mode 100644 index 00000000000..be3c978627b --- /dev/null +++ b/idea/testData/quickfix/removeSingleLambdaParameter/inIf2.kt.after @@ -0,0 +1,5 @@ +// "Remove single lambda parameter declaration" "true" +fun test(i: Int) { + val p: (String) -> Boolean = + if (i == 1) { { true } } else { s -> false } +} \ No newline at end of file diff --git a/idea/testData/quickfix/removeSingleLambdaParameter/inWhen.kt b/idea/testData/quickfix/removeSingleLambdaParameter/inWhen.kt new file mode 100644 index 00000000000..ea39e9b07d7 --- /dev/null +++ b/idea/testData/quickfix/removeSingleLambdaParameter/inWhen.kt @@ -0,0 +1,11 @@ +// "Remove single lambda parameter declaration" "false" +// ACTION: Add braces to 'when' entry +// ACTION: Remove explicit lambda parameter types (may break code) +// ACTION: Rename to _ +fun test(i: Int) { + val p: (String) -> Boolean = + when (i) { + 1 -> { s: String -> true } + else -> { s: String -> false } + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/removeSingleLambdaParameter/inWhen2.kt b/idea/testData/quickfix/removeSingleLambdaParameter/inWhen2.kt new file mode 100644 index 00000000000..6b564bdc733 --- /dev/null +++ b/idea/testData/quickfix/removeSingleLambdaParameter/inWhen2.kt @@ -0,0 +1,8 @@ +// "Remove single lambda parameter declaration" "true" +fun test(i: Int) { + val p: (String) -> Boolean = + when (i) { + 1 -> { { s -> true } } + else -> { s -> false } + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/removeSingleLambdaParameter/inWhen2.kt.after b/idea/testData/quickfix/removeSingleLambdaParameter/inWhen2.kt.after new file mode 100644 index 00000000000..2b595e0b57a --- /dev/null +++ b/idea/testData/quickfix/removeSingleLambdaParameter/inWhen2.kt.after @@ -0,0 +1,8 @@ +// "Remove single lambda parameter declaration" "true" +fun test(i: Int) { + val p: (String) -> Boolean = + when (i) { + 1 -> { { true } } + else -> { s -> false } + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 5a11b33bf8d..6e0079486cb 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -10655,6 +10655,26 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/quickfix/removeSingleLambdaParameter"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), null, true); } + @TestMetadata("inIf.kt") + public void testInIf() throws Exception { + runTest("idea/testData/quickfix/removeSingleLambdaParameter/inIf.kt"); + } + + @TestMetadata("inIf2.kt") + public void testInIf2() throws Exception { + runTest("idea/testData/quickfix/removeSingleLambdaParameter/inIf2.kt"); + } + + @TestMetadata("inWhen.kt") + public void testInWhen() throws Exception { + runTest("idea/testData/quickfix/removeSingleLambdaParameter/inWhen.kt"); + } + + @TestMetadata("inWhen2.kt") + public void testInWhen2() throws Exception { + runTest("idea/testData/quickfix/removeSingleLambdaParameter/inWhen2.kt"); + } + @TestMetadata("multiple.kt") public void testMultiple() throws Exception { runTest("idea/testData/quickfix/removeSingleLambdaParameter/multiple.kt");