From ea0f9d124ded39656597ae0ec661dcee0b3b6293 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Tue, 18 Dec 2018 13:43:23 +0900 Subject: [PATCH] Split property declaration: don't add parentheses for anonymous function #KT-7593 Fixed --- compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java | 8 ++++++++ .../intentions/declarations/split/anonymousFunction.kt | 4 ++++ .../declarations/split/anonymousFunction.kt.after | 5 +++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 5 +++++ 4 files changed, 22 insertions(+) create mode 100644 idea/testData/intentions/declarations/split/anonymousFunction.kt create mode 100644 idea/testData/intentions/declarations/split/anonymousFunction.kt.after diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java index 8905759cde4..598e402b332 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java @@ -495,6 +495,14 @@ public class KtPsiUtil { return false; } + // 'x = fun {}' case + if (parentElement instanceof KtBinaryExpression && + parentOperation == KtTokens.EQ && + innerExpression instanceof KtNamedFunction && + currentInner == ((KtBinaryExpression) parentElement).getRight()) { + return false; + } + if (innerExpression instanceof KtBinaryExpression) { // '(x operator return [...]) operator ...' case if (parentElement instanceof KtBinaryExpression) { diff --git a/idea/testData/intentions/declarations/split/anonymousFunction.kt b/idea/testData/intentions/declarations/split/anonymousFunction.kt new file mode 100644 index 00000000000..c01a524f24e --- /dev/null +++ b/idea/testData/intentions/declarations/split/anonymousFunction.kt @@ -0,0 +1,4 @@ +fun test() { + val f = fun () { + } +} \ No newline at end of file diff --git a/idea/testData/intentions/declarations/split/anonymousFunction.kt.after b/idea/testData/intentions/declarations/split/anonymousFunction.kt.after new file mode 100644 index 00000000000..208cc6e71c4 --- /dev/null +++ b/idea/testData/intentions/declarations/split/anonymousFunction.kt.after @@ -0,0 +1,5 @@ +fun test() { + val f: () -> Unit + f = fun () { + } +} \ 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 8215b5724bd..1d754b6770d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -8577,6 +8577,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/declarations/split"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true); } + @TestMetadata("anonymousFunction.kt") + public void testAnonymousFunction() throws Exception { + runTest("idea/testData/intentions/declarations/split/anonymousFunction.kt"); + } + @TestMetadata("longInit.kt") public void testLongInit() throws Exception { runTest("idea/testData/intentions/declarations/split/longInit.kt");