Correct the argument types of the StringBuilder.append

Modified AsmUtil to generate calls to more specific append methods
in the StringBuilder class in order to save computation time and make
less temporary objects.

Also adds unit-test to verify that the append(Object) method was
invoked 0 times while the append(String) 3 times

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
This commit is contained in:
Laszlo Hornyak
2014-05-12 21:07:47 +02:00
committed by Alexander Udalov
parent 34e8cae89e
commit 9dec0fb779
5 changed files with 73 additions and 5 deletions

View File

@@ -0,0 +1,10 @@
// KT-5016 wrong StringBuilder append method invoked
class kt5016 {
fun f1(name : String) : String {
return "Hello $name!"
}
}
// 0 INVOKEVIRTUAL java/lang/StringBuilder.append \(Ljava/lang/Object;\)Ljava/lang/StringBuilder
// 3 INVOKEVIRTUAL java/lang/StringBuilder.append \(Ljava/lang/String;\)Ljava/lang/StringBuilder
// 1 INVOKEVIRTUAL java/lang/StringBuilder.toString

View File

@@ -0,0 +1,11 @@
// KT-5016 wrong StringBuilder append method invoked
class kt5016int {
fun f1(num : Int) : String {
return "Hello to all the $num!"
}
}
// 0 INVOKEVIRTUAL java/lang/StringBuilder.append \(Ljava/lang/Object;\)Ljava/lang/StringBuilder
// 2 INVOKEVIRTUAL java/lang/StringBuilder.append \(Ljava/lang/String;\)Ljava/lang/StringBuilder
// 1 INVOKEVIRTUAL java/lang/StringBuilder.append \(I\)Ljava/lang/StringBuilder
// 1 INVOKEVIRTUAL java/lang/StringBuilder.toString

View File

@@ -0,0 +1,10 @@
// KT-5016 wrong StringBuilder append method invoked
class kt5016intOrNull {
fun f1(num : Int?) : String {
return "Hello to all the $num!"
}
}
// 1 INVOKEVIRTUAL java/lang/StringBuilder.append \(Ljava/lang/Object;\)Ljava/lang/StringBuilder
// 2 INVOKEVIRTUAL java/lang/StringBuilder.append \(Ljava/lang/String;\)Ljava/lang/StringBuilder
// 1 INVOKEVIRTUAL java/lang/StringBuilder.toString