| // KT-54635: Kotlin/JS cannot distinguish between Int and Double at runtime | |
| // AssertionError: Expected <test1: 1.0>, actual <test1: 1> | |
| // IGNORE_BACKEND: JS_IR, JS_IR_ES6 | |
| // WITH_STDLIB | |
| import kotlin.test.* | |
| fun box(): String { | |
| run { | |
| class Test1<T : Number, G>(val x: T, val y: G) { | |
| override fun toString() = "test1: ${x.toDouble()}" | |
| } | |
| class Test2<X>(val a: Test1<Int, X>) { | |
| override fun toString() = "test2" | |
| } | |
| val v = Test2(Test1(1, Test2(Test1(1, 3)))) | |
| assertEquals("test1: 1.0", v.a.toString()) | |
| assertEquals("1", v.a.x.toString()) | |
| assertEquals("test2", v.a.y.toString()) | |
| } | |
| return "OK" | |
| } |