Files
kotlin-fork/js/js.translator/testData/box/expression/try/overrideThrowableProperties.kt
T
Anton Bannykh b0de442d76 JS IR: fix throwable descendants
^ KT-43490 fixed
2023-03-21 12:32:41 +00:00

58 lines
1.1 KiB
Kotlin
Vendored

// EXPECTED_REACHABLE_NODES: 1315
open class Ex0(msg: String, cs: Throwable): Throwable(msg, cs)
open class Ex1: Ex0("A", Error("fail2")) {
override val cause = Error("B")
}
open class Ex2: Ex0("fail3", Error("C")) {
override val message = "D"
}
open class Ex3: Ex0("fail", Error("fail")) {
override val message get() = "O"
override val cause get() = Error("K")
}
open class Ex4: Ex3()
class Ex5: Ex4() {
override val message: String
get() = "!"
}
@JsExport
open class A : Throwable("AM", Error("AC"))
@JsExport
open class B : A() {
override val message = "BM"
override val cause = Error("BC")
}
@JsExport
class C : B()
fun Throwable.check(expectedMessage: String, expectedCauseMessage: String?) {
assertEquals(expectedMessage, message)
assertEquals(expectedCauseMessage, cause?.message)
}
fun box(): String {
Ex1().check("A", "B")
Ex2().check("D", "C")
Ex3().check("O", "K")
Ex4().check("O", "K")
Ex5().check("!", "K")
A().check("AM", "AC")
B().check("BM", "BC")
C().check("BM", "BC")
return "OK"
}