// IGNORE_BACKEND: JS_IR, JS_IR_ES6, WASM
// FILE: lib.kt
val x: String = computeX()

fun computeX(): String = throw IllegalStateException("1")

// FILE: lib2.kt
val y: String = computeY()

fun computeY(): String = throw Error("2")


// FILE: main.kt
fun box() : String {
    try {
        x
        return "FAIL 1"
    } catch(t: Error) {
        val cause = t.cause
        if (cause !is IllegalStateException) return "FAIL 2"
        if (cause.message != "1") return "FAIL 3"
    }
    try {
        y
        return "FAIL 4"
    } catch(t: Error) {
        if (t.cause != null) return "FAIL 5"
        if (t.message != "2") return "FAIL 6"
    }
    return "OK"
}
