diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt index 1376ff2b96f..20bd1b207ba 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt @@ -164,15 +164,15 @@ fun KtElement.blockExpressionsOrSingle(): Sequence = fun KtExpression.lastBlockStatementOrThis(): KtExpression = (this as? KtBlockExpression)?.statements?.lastOrNull() ?: this fun KtBlockExpression.contentRange(): PsiChildRange { - val first = (lBrace?.nextSibling ?: firstChild) - ?.siblings(withItself = false) - ?.firstOrNull { it !is PsiWhiteSpace } - val rBrace = rBrace + val lBrace = this.lBrace ?: return PsiChildRange.EMPTY + val rBrace = this.rBrace ?: return PsiChildRange.EMPTY + + val first = lBrace.siblings(withItself = false).firstOrNull { it !is PsiWhiteSpace } if (first == rBrace) return PsiChildRange.EMPTY - val last = rBrace!! - .siblings(forward = false, withItself = false) - .first { it !is PsiWhiteSpace } + + val last = rBrace.siblings(forward = false, withItself = false).first { it !is PsiWhiteSpace } if (last == lBrace) return PsiChildRange.EMPTY + return PsiChildRange(first, last) } diff --git a/idea/testData/intentions/anonymousFunctionToLambda/noSpaceAfterFunctionLeftBrace.kt b/idea/testData/intentions/anonymousFunctionToLambda/noSpaceAfterFunctionLeftBrace.kt new file mode 100644 index 00000000000..7dc35364f12 --- /dev/null +++ b/idea/testData/intentions/anonymousFunctionToLambda/noSpaceAfterFunctionLeftBrace.kt @@ -0,0 +1,6 @@ +fun foo(f: (Int) -> Boolean) { + f(1) +} +fun test() { + foo(fun(i: Int): Boolean {return i > 0 }) +} \ No newline at end of file diff --git a/idea/testData/intentions/anonymousFunctionToLambda/noSpaceAfterFunctionLeftBrace.kt.after b/idea/testData/intentions/anonymousFunctionToLambda/noSpaceAfterFunctionLeftBrace.kt.after new file mode 100644 index 00000000000..8c2a91cd1e4 --- /dev/null +++ b/idea/testData/intentions/anonymousFunctionToLambda/noSpaceAfterFunctionLeftBrace.kt.after @@ -0,0 +1,6 @@ +fun foo(f: (Int) -> Boolean) { + f(1) +} +fun test() { + foo { i -> i > 0 } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 17729b8a2a2..6071112920f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -1954,6 +1954,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/anonymousFunctionToLambda/moveOut.kt"); } + @TestMetadata("noSpaceAfterFunctionLeftBrace.kt") + public void testNoSpaceAfterFunctionLeftBrace() throws Exception { + runTest("idea/testData/intentions/anonymousFunctionToLambda/noSpaceAfterFunctionLeftBrace.kt"); + } + @TestMetadata("paramName.kt") public void testParamName() throws Exception { runTest("idea/testData/intentions/anonymousFunctionToLambda/paramName.kt");