DeprecatedSymbolUsageFix: fixed for string template
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ public class KotlinInlineValHandler extends InlineActionHandler {
|
||||
continue;
|
||||
}
|
||||
|
||||
inlinedExpressions.add(replaceExpression(referenceExpression, initializer));
|
||||
inlinedExpressions.add((JetExpression) referenceExpression.replace(initializer));
|
||||
}
|
||||
|
||||
for (PsiElement assignment : assignments) {
|
||||
@@ -393,22 +393,4 @@ public class KotlinInlineValHandler extends InlineActionHandler {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static JetExpression replaceExpression(
|
||||
@NotNull PsiElement referenceElement,
|
||||
@NotNull JetExpression newExpression
|
||||
) {
|
||||
PsiElement parent = referenceElement.getParent();
|
||||
if (parent instanceof JetSimpleNameStringTemplateEntry &&
|
||||
!(newExpression instanceof JetSimpleNameExpression)) {
|
||||
JetBlockStringTemplateEntry templateEntry =
|
||||
(JetBlockStringTemplateEntry) parent.replace(
|
||||
JetPsiFactory((JetElement) parent).createBlockStringTemplateEntry(newExpression));
|
||||
JetExpression expression = templateEntry.getExpression();
|
||||
assert expression != null;
|
||||
return expression;
|
||||
}
|
||||
return (JetExpression) referenceElement.replace(newExpression.copy());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// "Replace with '"p = $p"'" "true"
|
||||
|
||||
@deprecated("", ReplaceWith("\"p = \$p\""))
|
||||
fun oldFun(p: Int) = "p = $p"
|
||||
|
||||
fun foo(p: Int) {
|
||||
val s = <caret>oldFun(p + 1)
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
// "Replace with '"p = $p"'" "true"
|
||||
|
||||
@deprecated("", ReplaceWith("\"p = \$p\""))
|
||||
fun oldFun(p: Int) = "p = $p"
|
||||
|
||||
fun foo(p: Int) {
|
||||
val s = <caret>"p = ${p + 1}"
|
||||
}
|
||||
@@ -3046,6 +3046,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("stringTemplate.kt")
|
||||
public void testStringTemplate() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/deprecatedSymbolUsage/stringTemplate.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("toOuterClassMethod.kt")
|
||||
public void testToOuterClassMethod() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/deprecatedSymbolUsage/toOuterClassMethod.kt");
|
||||
|
||||
Reference in New Issue
Block a user