Fix KT-8091: J2K string with octal escaped chars
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user