From 9b49c23668caad9d73576b157e37b8e28ae3c434 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Mon, 15 Oct 2018 23:04:19 +0900 Subject: [PATCH] Move lambda out: don't report in delegation #KT-27584 Fixed --- .../org/jetbrains/kotlin/idea/core/psiModificationUtils.kt | 1 + .../moveLambdaOutsideParentheses/delegation.kt | 4 ++++ .../idea/inspections/LocalInspectionTestGenerated.java | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/delegation.kt diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt index 59199888593..3a12170339e 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt @@ -123,6 +123,7 @@ fun KtCallExpression.getLastLambdaExpression(): KtLambdaExpression? { } fun KtCallExpression.canMoveLambdaOutsideParentheses(): Boolean { + if (getStrictParentOfType() != null) return false if (getLastLambdaExpression() == null) return false val callee = calleeExpression diff --git a/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/delegation.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/delegation.kt new file mode 100644 index 00000000000..92e95a683e5 --- /dev/null +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/delegation.kt @@ -0,0 +1,4 @@ +// PROBLEM: none +interface I +class C1(s: String, f: (String) -> String) : I +class C2 : I by C1("", { "" }) diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index d9a2826fb81..6f67ab77377 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -3398,6 +3398,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/ambigousOverload.kt"); } + @TestMetadata("delegation.kt") + public void testDelegation() throws Exception { + runTest("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/delegation.kt"); + } + @TestMetadata("functionalValueCall.kt") public void testFunctionalValueCall() throws Exception { runTest("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/functionalValueCall.kt");