JS IR: fix throwable descendants
^ KT-43490 fixed
This commit is contained in:
committed by
Space Team
parent
48ed6c4cc7
commit
b0de442d76
+44
-7
@@ -2,20 +2,57 @@
|
||||
|
||||
open class Ex0(msg: String, cs: Throwable): Throwable(msg, cs)
|
||||
|
||||
class Ex1: Ex0("A", Error("fail2")) {
|
||||
open class Ex1: Ex0("A", Error("fail2")) {
|
||||
override val cause = Error("B")
|
||||
}
|
||||
|
||||
class Ex2: Ex0("fail3", Error("C")) {
|
||||
open class Ex2: Ex0("fail3", Error("C")) {
|
||||
override val message = "D"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val ex1: Throwable = Ex1()
|
||||
val ex2: Throwable = Ex2()
|
||||
open class Ex3: Ex0("fail", Error("fail")) {
|
||||
override val message get() = "O"
|
||||
|
||||
val r = ex1.message + ex1.cause?.message + ex2.cause?.message + ex2.message
|
||||
if (r != "ABCD") return "Fail: $r"
|
||||
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"
|
||||
}
|
||||
Reference in New Issue
Block a user