diff options
author | 2023-01-17 17:10:42 -0800 | |
---|---|---|
committer | 2023-01-17 17:11:08 -0800 | |
commit | 9b260fb18b4b957674ad6cf284795c0ff2d8c7e7 (patch) | |
tree | 6f9c313f606e8d84dccc8b74c43a0d90e39eb4ff /src | |
parent | b931c19ba3793b1d62fffff735b1d29e62d4c89c (diff) | |
download | bun-9b260fb18b4b957674ad6cf284795c0ff2d8c7e7.tar.gz bun-9b260fb18b4b957674ad6cf284795c0ff2d8c7e7.tar.zst bun-9b260fb18b4b957674ad6cf284795c0ff2d8c7e7.zip |
Allow error instance in process.emitWarning
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/bindings/Process.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/bun.js/bindings/Process.cpp b/src/bun.js/bindings/Process.cpp index 69025f373..085010e06 100644 --- a/src/bun.js/bindings/Process.cpp +++ b/src/bun.js/bindings/Process.cpp @@ -531,21 +531,30 @@ JSC_DEFINE_HOST_FUNCTION(Process_emitWarning, (JSGlobalObject * lexicalGlobalObj return JSValue::encode(jsUndefined()); } - auto jsArgs = JSValue::encode(callFrame->uncheckedArgument(0)); - RETURN_IF_EXCEPTION(scope, encodedJSValue()); auto* process = jsCast<Process*>(globalObject->processObject()); + auto getError = [&]() -> JSValue { + JSValue arg0 = callFrame->uncheckedArgument(0); + if (!arg0.isEmpty() && arg0.isCell() && arg0.asCell()->type() == ErrorInstanceType) { + return arg0; + } + + WTF::String str = arg0.toWTFString(globalObject); + return createError(globalObject, str); + }; + auto ident = Identifier::fromString(vm, "warning"_s); if (process->wrapped().hasEventListeners(ident)) { - WTF::String str = callFrame->uncheckedArgument(0).toWTFString(globalObject); JSC::MarkedArgumentBuffer args; - args.append(createError(globalObject, str)); + args.append(getError()); + process->wrapped().emit(ident, args); return JSValue::encode(jsUndefined()); } + auto jsArgs = JSValue::encode(getError()); Zig__ConsoleClient__messageWithTypeAndLevel(reinterpret_cast<Zig::ConsoleClient*>(globalObject->consoleClient().get())->m_client, static_cast<uint32_t>(MessageType::Log), static_cast<uint32_t>(MessageLevel::Warning), globalObject, &jsArgs, 1); return JSValue::encode(jsUndefined()); |