J2K: Quote '$' symbols in converted strings
#KT-6800 Fixed
This commit is contained in:
@@ -309,6 +309,10 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter {
|
||||
val toIntIsNeeded = value != null && value.toString().toInt() < 0 && !isLongField(expression.parent)
|
||||
text = if (value != null && !isHexLiteral(text)) value.toString() else text + (if (toIntIsNeeded) ".toInt()" else "")
|
||||
}
|
||||
|
||||
if (typeStr == "java.lang.String") {
|
||||
text = text.replace("\\$([A-Za-z]+|\\{)".toRegex(), "\\\\$0")
|
||||
}
|
||||
}
|
||||
|
||||
result = LiteralExpression(text)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
public class A {
|
||||
private String dollar1 = "$a";
|
||||
private String dollar2 = "$A";
|
||||
private String dollar3 = "${s}";
|
||||
private String dollar4 = "$$";
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class A {
|
||||
private val dollar1 = "\$a"
|
||||
private val dollar2 = "\$A"
|
||||
private val dollar3 = "\${s}"
|
||||
private val dollar4 = "$$"
|
||||
}
|
||||
@@ -4066,6 +4066,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/strings"), Pattern.compile("^(.+)\\.java$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("escapedDollar.java")
|
||||
public void testEscapedDollar() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/strings/escapedDollar.java");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("formattedString.java")
|
||||
public void testFormattedString() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/strings/formattedString.java");
|
||||
|
||||
@@ -4066,6 +4066,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/strings"), Pattern.compile("^(.+)\\.java$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("escapedDollar.java")
|
||||
public void testEscapedDollar() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/strings/escapedDollar.java");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("formattedString.java")
|
||||
public void testFormattedString() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/strings/formattedString.java");
|
||||
|
||||
Reference in New Issue
Block a user