Fix KT-8091: J2K string with octal escaped chars

This commit is contained in:
Simon Ogorodnik
2016-10-11 14:51:07 +03:00
parent 383b7f89a6
commit a64c45c9fe
5 changed files with 29 additions and 0 deletions
@@ -314,6 +314,9 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter {
}
if (typeStr == "java.lang.String") {
text = text.replace("\\\\([0-3]?[0-7]{1,2})".toRegex(), {
String.format("\\u%04x", Integer.parseInt(it.groupValues[1], 8))
})
text = text.replace("\\$([A-Za-z]+|\\{)".toRegex(), "\\\\$0")
}
}
@@ -0,0 +1,7 @@
public class A {
public String a = "\770123";
public String b = "\1110123";
public String c = "\3770123";
public String d = "\000Text";
public String f = "\09";
}
@@ -0,0 +1,7 @@
class A {
var a = "\u003f0123"
var b = "\u00490123"
var c = "\u00ff0123"
var d = "\u0000Text"
var f = "\u00009"
}
@@ -3232,6 +3232,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo
doTest(fileName);
}
@TestMetadata("stringOctalChars.java")
public void testStringOctalChars() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/literalExpression/stringOctalChars.java");
doTest(fileName);
}
@TestMetadata("trueOrFalse.java")
public void testTrueOrFalse() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/literalExpression/trueOrFalse.java");
@@ -3232,6 +3232,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo
doTest(fileName);
}
@TestMetadata("stringOctalChars.java")
public void testStringOctalChars() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/literalExpression/stringOctalChars.java");
doTest(fileName);
}
@TestMetadata("trueOrFalse.java")
public void testTrueOrFalse() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/literalExpression/trueOrFalse.java");