From 6dd58ad197ef90743196017f15362325b92de6b5 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 23 Oct 2015 19:38:11 +0300 Subject: [PATCH] Inline: Fix inlining of if-expressions into qualified expressions #KT-8008 Fixed --- .../frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java | 2 ++ idea/testData/refactoring/inline/ifInQualifiedExpression.kt | 6 ++++++ .../refactoring/inline/ifInQualifiedExpression.kt.after | 5 +++++ .../kotlin/idea/refactoring/inline/InlineTestGenerated.java | 6 ++++++ 4 files changed, 19 insertions(+) create mode 100644 idea/testData/refactoring/inline/ifInQualifiedExpression.kt create mode 100644 idea/testData/refactoring/inline/ifInQualifiedExpression.kt.after diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java index d3e7ddf59bc..d808ae28fab 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java @@ -483,6 +483,8 @@ public class KtPsiUtil { } if (innerExpression instanceof KtIfExpression) { + if (parentExpression instanceof KtQualifiedExpression) return true; + PsiElement current = parentExpression; while (!(current instanceof KtBlockExpression || current instanceof KtDeclaration || current instanceof KtStatementExpression)) { diff --git a/idea/testData/refactoring/inline/ifInQualifiedExpression.kt b/idea/testData/refactoring/inline/ifInQualifiedExpression.kt new file mode 100644 index 00000000000..356041a7c4d --- /dev/null +++ b/idea/testData/refactoring/inline/ifInQualifiedExpression.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun boo() : Pair { + val flag = true + val value = if (flag) 0 else 1 + return value.to("value") +} \ No newline at end of file diff --git a/idea/testData/refactoring/inline/ifInQualifiedExpression.kt.after b/idea/testData/refactoring/inline/ifInQualifiedExpression.kt.after new file mode 100644 index 00000000000..d5e5cb0b0e5 --- /dev/null +++ b/idea/testData/refactoring/inline/ifInQualifiedExpression.kt.after @@ -0,0 +1,5 @@ +// WITH_RUNTIME +fun boo() : Pair { + val flag = true + return (if (flag) 0 else 1).to("value") +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java index dffdba889ee..240445a15ab 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java @@ -47,6 +47,12 @@ public class InlineTestGenerated extends AbstractInlineTest { doTest(fileName); } + @TestMetadata("ifInQualifiedExpression.kt") + public void testIfInQualifiedExpression() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/inline/ifInQualifiedExpression.kt"); + doTest(fileName); + } + @TestMetadata("InFunctionLiteral.kt") public void testInFunctionLiteral() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/inline/InFunctionLiteral.kt");