diff --git a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt index d72af2bd0ce..9705fd9d9da 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt @@ -71,6 +71,15 @@ enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String = MethodCallExpression.build(null, "setOf", listOf(codeConverter.convertExpression(arguments.single())), typeArgumentsConverted, false) }, + STRING_REPLACE_ALL("java.lang.String", "replaceAll", 2) { + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) + = MethodCallExpression.build(codeConverter.convertExpression(qualifier), "replace", + listOf( + codeConverter.convertToRegex(arguments[0]), + codeConverter.convertExpression(arguments[1]) + ), emptyList(), false) + }, + SYSTEM_OUT_PRINTLN("java.io.PrintStream", "println", null) { override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) = convertSystemOutMethodCall(methodName, qualifier, arguments, typeArgumentsConverted, codeConverter) @@ -104,3 +113,6 @@ private fun convertSystemOutMethodCall( if (typeArgumentsConverted.isNotEmpty()) return null return MethodCallExpression.build(null, methodName, arguments.map { codeConverter.convertExpression(it) }, emptyList(), false) } + +private fun CodeConverter.convertToRegex(expression: PsiExpression?): Expression + = MethodCallExpression.build(convertExpression(expression), "toRegex", emptyList(), emptyList(), false).assignNoPrototype() diff --git a/j2k/testData/fileOrElement/literalExpression/dollarInsideString.kt b/j2k/testData/fileOrElement/literalExpression/dollarInsideString.kt index b6f4526ef87..42ffad87d19 100644 --- a/j2k/testData/fileOrElement/literalExpression/dollarInsideString.kt +++ b/j2k/testData/fileOrElement/literalExpression/dollarInsideString.kt @@ -3,7 +3,7 @@ package demo internal class Test { fun test() { var name = "$$$$" - name = name.replaceAll("\\$[0-9]+", "\\$") + name = name.replace("\\$[0-9]+".toRegex(), "\\$") val c = '$' println(c)