Fix for KT-2789: NoSuchMethodError when calling trait function with default arguments that returns generic type, KT-9428 Abstract method with one parameter and one default parameter produces NoSuchMethodError, KT-9924 NoSuchMethod when replacing generic with specific type

#KT-2789 Fixed
 #KT-9428 Fixed
 #KT-9924 Fixed
This commit is contained in:
Michael Bogdanov
2015-11-12 13:04:56 +03:00
parent 3f995935d3
commit 7e8e4e9e1b
6 changed files with 116 additions and 18 deletions
@@ -0,0 +1,23 @@
open class Player(val name: String)
open class SlashPlayer(name: String) : Player(name)
public abstract class Game<T : Player> {
abstract fun getPlayer(name: String, create: Boolean = true): T?
}
class SimpleGame : Game<SlashPlayer>() {
override fun getPlayer(name: String, create: Boolean): SlashPlayer? {
return if (create) {
SlashPlayer(name)
}
else null
}
}
fun box(): String {
val player1 = SimpleGame().getPlayer("fail", false)
if (player1 != null) return "fail 1"
val player2 = SimpleGame().getPlayer("OK")
return player2!!.name
}