If to when: more accurate comment handling #KT-12649 Fixed

This commit is contained in:
Mikhail Glukhikh
2016-06-08 17:05:45 +03:00
parent d2bf4cbfa0
commit 9470308fe7
5 changed files with 43 additions and 5 deletions
@@ -89,9 +89,11 @@ class IfToWhenIntention : SelfTargetingRangeIntention<KtIfExpression>(KtIfExpres
override fun applyTo(element: KtIfExpression, editor: Editor?) {
val siblings = element.siblings()
val commentSaver = CommentSaver(PsiChildRange(element, siblings.last()), saveLineBreaks = true)
val elementCommentSaver = CommentSaver(element)
val fullCommentSaver = CommentSaver(PsiChildRange(element, siblings.last()), saveLineBreaks = true)
val toDelete = ArrayList<PsiElement>()
var applyFullCommentSaver = true
var whenExpression = KtPsiFactory(element).buildExpression {
appendFixedText("when {\n")
@@ -134,8 +136,8 @@ class IfToWhenIntention : SelfTargetingRangeIntention<KtIfExpression>(KtIfExpres
currentIfExpression = currentElseBranch
}
else {
toDelete.addAll(baseIfExpressionForSyntheticBranch.siblingsUpTo(currentElseBranch))
appendElseBlock(currentElseBranch)
applyFullCommentSaver = false
break
}
}
@@ -149,7 +151,7 @@ class IfToWhenIntention : SelfTargetingRangeIntention<KtIfExpression>(KtIfExpres
}
val result = element.replace(whenExpression)
commentSaver.restore(result)
(if (applyFullCommentSaver) fullCommentSaver else elementCommentSaver).restore(result)
toDelete.forEach {
it.delete()
}