[WasmJs] Support catching JS exceptions

Fixed #KT-65660
This commit is contained in:
Igor Yakovlev
2024-02-12 20:41:38 +01:00
committed by Space Team
parent c6aac835e5
commit 8fe5cf2641
18 changed files with 216 additions and 26 deletions
+2 -2
View File
@@ -1,9 +1,9 @@
// TARGET_BACKEND: WASM
// RUN_THIRD_PARTY_OPTIMIZER
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 12_773
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 13_220
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 5_411
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 2_640
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 2_824
// FILE: test.kt
+2 -2
View File
@@ -1,9 +1,9 @@
// TARGET_BACKEND: WASM
// RUN_THIRD_PARTY_OPTIMIZER
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 35_154
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 35_681
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 5_431
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 8_586
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 8_830
fun box(): String {
println("Hello, World!")
+2 -2
View File
@@ -1,9 +1,9 @@
// TARGET_BACKEND: WASM
// RUN_THIRD_PARTY_OPTIMIZER
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 14_178
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 14_584
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 5_968
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 4_317
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 4_570
// FILE: test.kt
+2 -2
View File
@@ -1,9 +1,9 @@
// TARGET_BACKEND: WASM
// RUN_THIRD_PARTY_OPTIMIZER
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 17_907
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 18_320
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 5_277
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 5_841
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 6_095
object Simple
+2 -2
View File
@@ -1,8 +1,8 @@
// TARGET_BACKEND: WASM
// RUN_THIRD_PARTY_OPTIMIZER
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 12_856
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 13_262
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 5_277
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 3_743
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 3_996
fun box() = "OK"
+2 -2
View File
@@ -2,9 +2,9 @@
// TARGET_BACKEND: WASM
// RUN_THIRD_PARTY_OPTIMIZER
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 13_321
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 13_769
// WASM_DCE_EXPECTED_OUTPUT_SIZE: mjs 5_277
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 3_900
// WASM_OPT_EXPECTED_OUTPUT_SIZE: 4_153
interface I {
fun foo() = "OK"
@@ -0,0 +1,42 @@
// TARGET_BACKEND: WASM
fun throwSomeJsException(): Int = js("{ throw 42; }")
fun withFinally(): Boolean {
try {
throwSomeJsException()
return false
} finally {
return true
}
return false
}
fun withThrowable(): Boolean {
try {
throwSomeJsException()
return false
} catch (_: Throwable) {
return true
}
return false
}
fun withJsException(): Boolean {
try {
throwSomeJsException()
return false
} catch (_: JsException) {
return true
}
return false
}
fun box(): String {
if (!withFinally()) return "FAIL1"
if (!withThrowable()) return "FAIL2"
if (!withJsException()) return "FAIL3"
return "OK"
}