| // IGNORE_KLIB_RUNTIME_ERRORS_WITH_CUSTOM_SECOND_STAGE: WASM-JS:2.3.0 | |
| // ^^^ K/Wasm backend v.2.3.0 did not raise NothingValueException. Fixed only in 2.3.20-Beta1, commit 2074edc. | |
| // So, a test `current frontend + 2.3.0 backend` expectedly fails | |
| fun <T> something(): T = Any() as T | |
| class Context<T> | |
| fun <T> Any.decodeIn(typeFrom: Context<in T>): T = something() | |
| fun <T> Any?.decodeOut(typeFrom: Context<out T>): T { | |
| return this?.decodeIn(typeFrom) // decodeIn result is of type Nothing | |
| ?: throw AssertionError("") | |
| } | |
| fun box(): String { | |
| try { | |
| "str".decodeOut(Context<Any>()) | |
| } catch (e: Exception) { | |
| // TODO check FQN | |
| val exceptionClassName = e::class.simpleName | |
| if (exceptionClassName != "KotlinNothingValueException") { | |
| throw AssertionError("Unexpected exception: $e") | |
| } else { | |
| return "OK" | |
| } | |
| } | |
| throw AssertionError("Should fail with exception") | |
| } |