[JS IR BE] Fix throwable stuff to make exceptions similar to JVM
This commit is contained in:
+1
-1
@@ -46,7 +46,7 @@ class ThrowableLowering(
|
|||||||
|
|
||||||
private fun IrFunctionAccessExpression.extractThrowableArguments(): ThrowableArguments =
|
private fun IrFunctionAccessExpression.extractThrowableArguments(): ThrowableArguments =
|
||||||
when (valueArgumentsCount) {
|
when (valueArgumentsCount) {
|
||||||
0 -> ThrowableArguments(nullValue(), undefinedValue())
|
0 -> ThrowableArguments(undefinedValue(), undefinedValue())
|
||||||
2 -> ThrowableArguments(
|
2 -> ThrowableArguments(
|
||||||
message = getValueArgument(0)!!,
|
message = getValueArgument(0)!!,
|
||||||
cause = getValueArgument(1)!!
|
cause = getValueArgument(1)!!
|
||||||
|
|||||||
@@ -89,7 +89,9 @@ internal fun captureStack(instance: Throwable, constructorFunction: Any) {
|
|||||||
|
|
||||||
internal fun newThrowable(message: String?, cause: Throwable?): Throwable {
|
internal fun newThrowable(message: String?, cause: Throwable?): Throwable {
|
||||||
val throwable = js("new Error()")
|
val throwable = js("new Error()")
|
||||||
throwable.message = if (isUndefined(message)) cause?.toString() else message
|
throwable.message = if (isUndefined(message)) {
|
||||||
|
if (isUndefined(cause)) message else cause?.toString() ?: undefined
|
||||||
|
} else message ?: undefined
|
||||||
throwable.cause = cause
|
throwable.cause = cause
|
||||||
throwable.name = "Throwable"
|
throwable.name = "Throwable"
|
||||||
return throwable.unsafeCast<Throwable>()
|
return throwable.unsafeCast<Throwable>()
|
||||||
@@ -110,7 +112,7 @@ internal fun setPropertiesToThrowableInstance(this_: dynamic, message: String?,
|
|||||||
cause?.toString() ?: undefined
|
cause?.toString() ?: undefined
|
||||||
} else {
|
} else {
|
||||||
// real null
|
// real null
|
||||||
message
|
undefined
|
||||||
}
|
}
|
||||||
} else message
|
} else message
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user