| // IGNORE_BACKEND: JS_IR |
| // IGNORE_BACKEND: JS_IR_ES6 |
| // IGNORE_BACKEND: JS |
| // IGNORE_BACKEND: WASM |
| // WASM_MUTE_REASON: IGNORED_IN_JS |
| // reason - no error from division by zero in JS or WASM |
| |
| fun expectFail(f: () -> Unit): Nothing? { |
| try { |
| f() |
| } catch (e: ArithmeticException) { |
| return null |
| } |
| throw AssertionError("Expected ArithmeticException to be thrown") |
| } |
| |
| fun box(): String { |
| val a1 = 0 |
| val a2 = expectFail { 1 / 0 } ?: 0 |
| val a3 = expectFail { 1 / a1 } ?: 0 |
| val a4 = expectFail { 1 / a2 } ?: 0 |
| val a5 = expectFail { 2 * (1 / 0) } ?: 0 |
| val a6 = expectFail { 2 * 1 / 0 } ?: 0 |
| |
| val s1 = expectFail { "${2 * (1 / 0) }" } ?: "OK" |
| |
| return s1 |
| } |