[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 =
|
||||
when (valueArgumentsCount) {
|
||||
0 -> ThrowableArguments(nullValue(), undefinedValue())
|
||||
0 -> ThrowableArguments(undefinedValue(), undefinedValue())
|
||||
2 -> ThrowableArguments(
|
||||
message = getValueArgument(0)!!,
|
||||
cause = getValueArgument(1)!!
|
||||
|
||||
@@ -89,7 +89,9 @@ internal fun captureStack(instance: Throwable, constructorFunction: Any) {
|
||||
|
||||
internal fun newThrowable(message: String?, cause: Throwable?): Throwable {
|
||||
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.name = "Throwable"
|
||||
return throwable.unsafeCast<Throwable>()
|
||||
@@ -110,7 +112,7 @@ internal fun setPropertiesToThrowableInstance(this_: dynamic, message: String?,
|
||||
cause?.toString() ?: undefined
|
||||
} else {
|
||||
// real null
|
||||
message
|
||||
undefined
|
||||
}
|
||||
} else message
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user