Replace 'if' with 'when': don't swallow comments if there is no synthetic else branch
#KT-34640 Fixed
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
f487118be5
commit
699ea0aa2b
+5
-1
@@ -168,7 +168,11 @@ class IfToWhenIntention : SelfTargetingRangeIntention<KtIfExpression>(KtIfExpres
|
||||
val currentElseBranch = currentIfExpression.`else`
|
||||
if (currentElseBranch == null) {
|
||||
// Try to build synthetic if / else according to KT-10750
|
||||
val syntheticElseBranch = if (canPassThrough) break else buildNextBranch(baseIfExpressionForSyntheticBranch) ?: break
|
||||
val syntheticElseBranch = if (canPassThrough) null else buildNextBranch(baseIfExpressionForSyntheticBranch)
|
||||
if (syntheticElseBranch == null) {
|
||||
applyFullCommentSaver = false
|
||||
break
|
||||
}
|
||||
toDelete.addAll(baseIfExpressionForSyntheticBranch.siblingsUpTo(syntheticElseBranch))
|
||||
if (syntheticElseBranch is KtIfExpression) {
|
||||
baseIfExpressionForSyntheticBranch = syntheticElseBranch
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
fun test(foo: String) {
|
||||
<caret>if (foo == "1") {
|
||||
println("1")
|
||||
}
|
||||
|
||||
if (foo == "a") {
|
||||
// some comments for "a"
|
||||
println("a");
|
||||
}
|
||||
}
|
||||
|
||||
fun println(s: String) {}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
fun test(foo: String) {
|
||||
when (foo) {
|
||||
"1" -> {
|
||||
println("1")
|
||||
}
|
||||
}
|
||||
|
||||
if (foo == "a") {
|
||||
// some comments for "a"
|
||||
println("a");
|
||||
}
|
||||
}
|
||||
|
||||
fun println(s: String) {}
|
||||
@@ -2327,6 +2327,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
|
||||
runTest("idea/testData/intentions/branched/ifWhen/ifToWhen/comment.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("doNotSwallowComment.kt")
|
||||
public void testDoNotSwallowComment() throws Exception {
|
||||
runTest("idea/testData/intentions/branched/ifWhen/ifToWhen/doNotSwallowComment.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("ifElseSwallowComments.kt")
|
||||
public void testIfElseSwallowComments() throws Exception {
|
||||
runTest("idea/testData/intentions/branched/ifWhen/ifToWhen/ifElseSwallowComments.kt");
|
||||
|
||||
Reference in New Issue
Block a user