J2K: Quote '$' symbols in converted strings

#KT-6800 Fixed
This commit is contained in:
Natalia Ukhorskaya
2016-03-24 10:26:39 +03:00
parent 4bc4f0bce7
commit c7ae9981cb
5 changed files with 28 additions and 0 deletions
@@ -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)
+6
View File
@@ -0,0 +1,6 @@
public class A {
private String dollar1 = "$a";
private String dollar2 = "$A";
private String dollar3 = "${s}";
private String dollar4 = "$$";
}
+6
View File
@@ -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");