DeprecatedSymbolUsageFix: fixed for string template

This commit is contained in:
Valentin Kipyatkov
2015-05-29 19:59:13 +03:00
parent a5cb1e8c2b
commit e60c3f5ee7
5 changed files with 40 additions and 21 deletions
@@ -37,9 +37,24 @@ public abstract class JetExpressionImpl(node: ASTNode) : JetElementImpl(node), J
companion object {
fun replaceExpression(expression: JetExpression, newElement: PsiElement, rawReplaceHandler: (PsiElement) -> PsiElement): PsiElement {
val parent = expression.getParent()
if (parent is JetExpression && newElement is JetExpression && JetPsiUtil.areParenthesesNecessary(newElement, expression, parent)) {
return rawReplaceHandler(JetPsiFactory(expression).createExpressionByPattern("($0)", newElement))
if (newElement is JetExpression) {
when (parent) {
is JetExpression -> {
if (JetPsiUtil.areParenthesesNecessary(newElement, expression, parent)) {
return rawReplaceHandler(JetPsiFactory(expression).createExpressionByPattern("($0)", newElement))
}
}
is JetSimpleNameStringTemplateEntry -> {
if (newElement !is JetSimpleNameExpression) {
val newEntry = parent.replace(JetPsiFactory(expression).createBlockStringTemplateEntry(newElement)) as JetBlockStringTemplateEntry
return newEntry.getExpression()!!
}
}
}
}
return rawReplaceHandler(newElement)
}
}