Remove Concat and StringPlus intrinsics in favor of IrStringConcatenation.

This commit is contained in:
Steven Schäfer
2019-04-04 16:09:49 +02:00
committed by max-kammerer
parent 26c9d69252
commit f2392a6a28
20 changed files with 192 additions and 120 deletions
@@ -0,0 +1,18 @@
fun f(s: String?, t: String): String {
return s.plus(t)
}
fun g(s: String, t: Any?): String {
return "$s$t"
}
fun h(s: String, t: Any?): String {
return s + t
}
fun box(): String {
if (f("O", "K") != "OK") return "Fail 1"
if (g("O", "K") != "OK") return "Fail 2"
if (h("O", "K") != "OK") return "Fail 3"
return "OK"
}
@@ -0,0 +1,8 @@
fun f(s: String?): String {
return "$s"
}
fun box(): String {
if (f(null) != "null") return "Fail"
return "OK"
}
@@ -0,0 +1,9 @@
operator fun String?.plus(p: String): String {
return "" + this
}
fun test(a: String?, b: String): String {
return a + b
}
fun box() = test("OK", " Fail")
@@ -4,7 +4,7 @@
// - In argument to 2nd call to foo() inside string literal
fun test(s1: String, s2: String, s3: String): String {
fun foo(s: String) = s
return "foo: " + foo(s1 + s2 + " ${foo("\${s3.length} = ${s3.length}")}")
return "foo: " + foo(s1 + s2 + " ${foo("\${s3.length} = ${s3.length} ")}") + " "
}
// 3 NEW java/lang/StringBuilder
@@ -0,0 +1,8 @@
// IGNORE_BACKEND: JVM
fun f(s: String) = "$s"
fun g(s: String?) = "$s"
// 1 valueOf
// 0 NEW java/lang/StringBuilder
@@ -0,0 +1,17 @@
// IGNORE_BACKEND: JVM
fun f(s: String?, t: String): String {
return s.plus(t)
}
fun g(s: String, t: Any?): String {
return "$s$t"
}
fun h(s: String, t: Any?): String {
return s + t
}
// 0 valueOf
// 0 NEW java/lang/StringBuilder
// 3 INVOKESTATIC kotlin/jvm/internal/Intrinsics.stringPlus