KT-11710 "Replace 'if' with elvis operator": incorrect code generated for 'if' expression
#KT-11710 Fixed
This commit is contained in:
@@ -475,7 +475,7 @@ public class KtPsiUtil {
|
|||||||
|
|
||||||
while (!(current instanceof KtBlockExpression || current instanceof KtDeclaration || current instanceof KtStatementExpression)) {
|
while (!(current instanceof KtBlockExpression || current instanceof KtDeclaration || current instanceof KtStatementExpression)) {
|
||||||
if (current.getTextRange().getEndOffset() != currentInner.getTextRange().getEndOffset()) {
|
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();
|
current = current.getParent();
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
fun test(a: String?, b: String): String {
|
||||||
|
val x = if (true) a else b
|
||||||
|
<caret>if (x == null) throw Exception()
|
||||||
|
return x
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
fun test(a: String?, b: String): String {
|
||||||
|
val x = (if (true) a else b) ?: throw Exception()
|
||||||
|
return x
|
||||||
|
}
|
||||||
@@ -5364,6 +5364,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
|
|||||||
doTest(fileName);
|
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")
|
@TestMetadata("MultiStatementBlock.kt")
|
||||||
public void testMultiStatementBlock() throws Exception {
|
public void testMultiStatementBlock() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/ifNullToElvis/MultiStatementBlock.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/ifNullToElvis/MultiStatementBlock.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user