diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java index 6dc621be9ab..aa5f0577011 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java @@ -475,7 +475,7 @@ public class KtPsiUtil { while (!(current instanceof KtBlockExpression || current instanceof KtDeclaration || current instanceof KtStatementExpression)) { if (current.getTextRange().getEndOffset() != currentInner.getTextRange().getEndOffset()) { - return current.getText().charAt(current.getTextLength() - 1) != ')'; // if current expression is "guarded" by parenthesis, no extra parenthesis is necessary + return !(current instanceof KtParenthesizedExpression) && !(current instanceof KtValueArgumentList); // if current expression is "guarded" by parenthesis, no extra parenthesis is necessary } current = current.getParent(); diff --git a/idea/testData/intentions/ifNullToElvis/ifStatementPriority.kt b/idea/testData/intentions/ifNullToElvis/ifStatementPriority.kt new file mode 100644 index 00000000000..cceb84ed01c --- /dev/null +++ b/idea/testData/intentions/ifNullToElvis/ifStatementPriority.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(a: String?, b: String): String { + val x = if (true) a else b + if (x == null) throw Exception() + return x +} \ No newline at end of file diff --git a/idea/testData/intentions/ifNullToElvis/ifStatementPriority.kt.after b/idea/testData/intentions/ifNullToElvis/ifStatementPriority.kt.after new file mode 100644 index 00000000000..57603eb9f9a --- /dev/null +++ b/idea/testData/intentions/ifNullToElvis/ifStatementPriority.kt.after @@ -0,0 +1,5 @@ +// WITH_RUNTIME +fun test(a: String?, b: String): String { + val x = (if (true) a else b) ?: throw Exception() + return x +} \ 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 d46d7b93688..6fde0b0ea70 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -5364,6 +5364,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("ifStatementPriority.kt") + public void testIfStatementPriority() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/ifNullToElvis/ifStatementPriority.kt"); + doTest(fileName); + } + @TestMetadata("MultiStatementBlock.kt") public void testMultiStatementBlock() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/ifNullToElvis/MultiStatementBlock.kt");