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 {
|
companion object {
|
||||||
fun replaceExpression(expression: JetExpression, newElement: PsiElement, rawReplaceHandler: (PsiElement) -> PsiElement): PsiElement {
|
fun replaceExpression(expression: JetExpression, newElement: PsiElement, rawReplaceHandler: (PsiElement) -> PsiElement): PsiElement {
|
||||||
val parent = expression.getParent()
|
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)
|
return rawReplaceHandler(newElement)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ public class KotlinInlineValHandler extends InlineActionHandler {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
inlinedExpressions.add(replaceExpression(referenceExpression, initializer));
|
inlinedExpressions.add((JetExpression) referenceExpression.replace(initializer));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (PsiElement assignment : assignments) {
|
for (PsiElement assignment : assignments) {
|
||||||
@@ -393,22 +393,4 @@ public class KotlinInlineValHandler extends InlineActionHandler {
|
|||||||
}
|
}
|
||||||
return false;
|
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);
|
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")
|
@TestMetadata("toOuterClassMethod.kt")
|
||||||
public void testToOuterClassMethod() throws Exception {
|
public void testToOuterClassMethod() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/deprecatedSymbolUsage/toOuterClassMethod.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/deprecatedSymbolUsage/toOuterClassMethod.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user