From 1c657979508a2f7f37608ec557bf44088a941fa1 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 27 Jan 2016 15:27:34 +0300 Subject: [PATCH] Intentions: Fix contentRange() on empty KtBlockExpression #KT-10776 Fixed --- .../src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt | 1 + .../intentions/anonymousFunctionToLambda/emptyBody.kt | 5 +++++ .../intentions/anonymousFunctionToLambda/emptyBody.kt.after | 5 +++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 17 insertions(+) create mode 100644 idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt create mode 100644 idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt.after diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt index b8acee8d300..4a0abec0232 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt @@ -179,6 +179,7 @@ fun KtBlockExpression.contentRange(): PsiChildRange { 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/emptyBody.kt b/idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt new file mode 100644 index 00000000000..397f2e12fe2 --- /dev/null +++ b/idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt @@ -0,0 +1,5 @@ +fun acceptLambda(f: () -> Unit) = f() + +fun foo() { + acceptLambda(fun(): Unit {}) +} \ No newline at end of file diff --git a/idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt.after b/idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt.after new file mode 100644 index 00000000000..3e447cc5a6d --- /dev/null +++ b/idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt.after @@ -0,0 +1,5 @@ +fun acceptLambda(f: () -> Unit) = f() + +fun foo() { + acceptLambda { } +} \ 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 d9777a46684..932eb7c7f79 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -439,6 +439,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("emptyBody.kt") + public void testEmptyBody() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/anonymousFunctionToLambda/emptyBody.kt"); + doTest(fileName); + } + @TestMetadata("expressionBody.kt") public void testExpressionBody() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/anonymousFunctionToLambda/expressionBody.kt");