kevin.cianfarini
02/06/2025, 7:01 PM@Test fun foo() {
assertFails {
1 / 0
}
}
The thrown RuntimeError
is not caught. Is this expected? Stacktrace in thread 🧵kevin.cianfarini
02/06/2025, 7:01 PMRuntimeError: divide by zero
at <alchemist_test>.kotlin.Int__div-impl (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[2105]:0x347ba)
at <alchemist_test>.io.github.kevincianfarini.alchemist.SaturatingLongTest.dividing_by_double_zero_throws (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4933]:0x67b62)
at <alchemist_test>.io.github.kevincianfarini.alchemist.test fun$io.github.kevincianfarini.alchemist test fun$SaturatingLongTest test fun$dividing_by_double_zero_throws test fun.invoke (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4653]:0x5b3a1)
at <alchemist_test>.kotlin.test.TeamcityAdapter$test$lambda.invoke (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4228]:0x57519)
at <alchemist_test>.kotlin.test.TeamcityAdapterWithPromiseSupport.runOrScheduleNextWithResult (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4110]:0x55a28)
at <alchemist_test>.kotlin.test.TeamcityAdapterWithPromiseSupport.runOrScheduleNextWithResult (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4111]:0x55a66)
at <alchemist_test>.kotlin.test.TeamcityAdapter.test (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4251]:0x5908f)
at <alchemist_test>.kotlin.test.test (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4254]:0x592aa)
at <alchemist_test>.io.github.kevincianfarini.alchemist.test fun$io.github.kevincianfarini.alchemist test fun$SaturatingLongTest test fun.invoke (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4723]:0x5c285)
at <alchemist_test>.io.github.kevincianfarini.alchemist.test fun$io.github.kevincianfarini.alchemist test fun$SaturatingLongTest test fun.invoke (<wasm://wasm/><alchemist_test>-004f044e:wasm-function[4724]:0x5c2b6)
Svyatoslav Kuzmich [JB]
02/06/2025, 7:02 PMkevin.cianfarini
02/06/2025, 7:03 PMSvyatoslav Kuzmich [JB]
02/06/2025, 7:05 PM/
are not implemented yet in Kotlin compiler.kevin.cianfarini
02/06/2025, 7:29 PM1 / 0
on JS (not wasmJs) doesn't throw at all?
assertFailsWith<ArithmeticException> {
1.0 / 0.0
}
output:
io.github.kevincianfarini.alchemist.SaturatingLongTest.dividing_by_double_zero_throws[js, node] FAILED
AssertionError: Expected an exception of class ArithmeticException to be thrown, but was completed successfully.
at DefaultJsAsserter.protoOf.fail_zdvzi9(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/js/src/main/kotlin/kotlin/test/JsImpl.kt:23)
at DefaultJsAsserter.protoOf.fail_o3vfxl(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/js/src/main/kotlin/kotlin/test/DefaultJsAsserter.kt:71)
at <global>.checkResultIsFailure(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/src/kotlin/util/Result.kt:36)
Chrimaeon
02/06/2025, 7:36 PM1.0/0.0 === Infinity
kevin.cianfarini
02/06/2025, 7:39 PMLong
it isn't!
tests:
@Test
fun int_division_by_zero_fails_arithmetic_exception() {
assertFailsWith<ArithmeticException> {
1 / 0
}
}
@Test
fun long_division_by_zero_fails_artithmetic_exception() {
assertFailsWith<ArithmeticException> {
1L / 0L
}
}
Output:
io.github.kevincianfarini.alchemist.SaturatingLongTest.int_division_by_zero_fails_arithmetic_exception[js, node] FAILED
AssertionError: Expected an exception of class ArithmeticException to be thrown, but was completed successfully.
at DefaultJsAsserter.protoOf.fail_zdvzi9(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/js/src/main/kotlin/kotlin/test/JsImpl.kt:23)
at DefaultJsAsserter.protoOf.fail_o3vfxl(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/js/src/main/kotlin/kotlin/test/DefaultJsAsserter.kt:71)
at <global>.checkResultIsFailure(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/src/kotlin/util/Result.kt:36)
at SaturatingLongTest.protoOf.int_division_by_zero_fails_arithmetic_exception_de063(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/common/src/main/kotlin/kotlin/test/Assertions.kt:661)
at <global>.fn(kotlin/alchemist-test.js:4360)
at Context.<anonymous>(/home/kevin/code/alchemist/build/js/node_modules/kotlin-web-helpers/src/KotlinTestTeamCityConsoleAdapter.ts:72)
at <global>.processImmediate(node:internal/timers:478)
io.github.kevincianfarini.alchemist.SaturatingLongTest.long_division_by_zero_fails_artithmetic_exception[js, node] FAILED
AssertionError: Expected an exception of class ArithmeticException to be thrown, but was Exception: division by zero
at DefaultJsAsserter.protoOf.fail_zdvzi9(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/js/src/main/kotlin/kotlin/test/JsImpl.kt:23)
at <global>.checkResultIsFailure(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/src/kotlin/util/Result.kt:46)
at SaturatingLongTest.protoOf.long_division_by_zero_fails_artithmetic_exception_2udkyc(/home/kevin/code/alchemist/build/compileSync/js/test/testDevelopmentExecutable/kotlin/common/src/main/kotlin/kotlin/test/Assertions.kt:661)
at <global>.fn(kotlin/alchemist-test.js:4365)
at Context.<anonymous>(/home/kevin/code/alchemist/build/js/node_modules/kotlin-web-helpers/src/KotlinTestTeamCityConsoleAdapter.ts:72)
at <global>.processImmediate(node:internal/timers:478)
kevin.cianfarini
02/06/2025, 7:39 PMChrimaeon
02/06/2025, 7:40 PMFor BigInt division, the result is the quotient of the two operands truncated towards zero, and the remainder is discarded. AI guess Koltinsis thrown if the divisorRangeError
isy
. This is because number division by zero returns0n
orInfinity
, but BigInt has no concept of infinity.-Infinity
Long
is mapped to BigInt
kevin.cianfarini
02/06/2025, 7:40 PMkevin.cianfarini
02/06/2025, 7:40 PMInt
kevin.cianfarini
02/06/2025, 7:41 PMkevin.cianfarini
02/06/2025, 7:45 PMException
, but instead ArithmeticExcepion
.kevin.cianfarini
02/06/2025, 7:45 PMSvyatoslav Kuzmich [JB]
02/06/2025, 7:50 PMkevin.cianfarini
04/30/2025, 7:38 PM