From 367b69dff5932958c66a5ca997e4cadb1ed90746 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 28 May 2024 16:54:08 -0700 Subject: [PATCH] bindings: fix createTypeError and createRangeError inheritance (#11341) --- .gitignore | 1 + src/bun.js/bindings/bindings.cpp | 18 ++---------------- test/js/bun/globals.test.js | 5 +++++ 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 06fcd381ec..72c25ee932 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,7 @@ /test.js /test.ts /testdir +/test.zig build build.ninja bun-binary diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index 31c3246406..f2d2d255a3 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -2465,14 +2465,7 @@ JSC__JSValue JSC__JSValue__createRangeError(const ZigString* message, const ZigS { JSC::VM& vm = globalObject->vm(); ZigString code = *arg1; - JSC::JSObject* rangeError = Zig::getErrorInstance(message, globalObject).asCell()->getObject(); - static const char* range_error_name = "RangeError"; - - rangeError->putDirect( - vm, vm.propertyNames->name, - JSC::JSValue(JSC::jsOwnedString( - vm, WTF::String(WTF::StringImpl::createWithoutCopying({ range_error_name, 10 })))), - 0); + JSC::JSObject* rangeError = Zig::getRangeErrorInstance(message, globalObject).asCell()->getObject(); if (code.len > 0) { auto clientData = WebCore::clientData(vm); @@ -2488,14 +2481,7 @@ JSC__JSValue JSC__JSValue__createTypeError(const ZigString* message, const ZigSt { JSC::VM& vm = globalObject->vm(); ZigString code = *arg1; - JSC::JSObject* typeError = Zig::getErrorInstance(message, globalObject).asCell()->getObject(); - static const char* range_error_name = "TypeError"; - - typeError->putDirect( - vm, vm.propertyNames->name, - JSC::JSValue(JSC::jsOwnedString( - vm, WTF::String(WTF::StringImpl::createWithoutCopying({ range_error_name, 9 })))), - 0); + JSC::JSObject* typeError = Zig::getTypeErrorInstance(message, globalObject).asCell()->getObject(); if (code.len > 0) { auto clientData = WebCore::clientData(vm); diff --git a/test/js/bun/globals.test.js b/test/js/bun/globals.test.js index 63927b2b19..2cc73fb999 100644 --- a/test/js/bun/globals.test.js +++ b/test/js/bun/globals.test.js @@ -153,3 +153,8 @@ it("self is a getter", () => { expect(descriptor.configurable).toBe(true); expect(globalThis.self).toBe(globalThis); }); + +it("errors thrown by native code should be TypeError", async () => { + expect(() => Bun.dns.prefetch()).toThrowError(TypeError); + expect(async () => await fetch("http://localhost", { body: "123" })).toThrowError(TypeError); +});