J2K: Special conversion for java.lang.String.replaceAll.

#KT-7732
This commit is contained in:
Ilya Gorbunov
2015-10-02 23:37:40 +03:00
parent 36f854e421
commit ca18613049
2 changed files with 13 additions and 1 deletions
@@ -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<PsiExpression>, typeArgumentsConverted: List<Type>, 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<PsiExpression>, typeArgumentsConverted: List<Type>, 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()
@@ -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)