1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-17 21:03:01 -05:00

feat(ext/web): add [[ErrorData]] slot to DOMException (#27342)

This commit is contained in:
Kenta Moriuchi 2024-12-13 21:22:29 +09:00 committed by GitHub
parent 3ddbea62c2
commit bf888d942a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 17 deletions

View file

@ -9,14 +9,15 @@
import { primordials } from "ext:core/mod.js";
const {
Error,
ErrorPrototype,
ErrorCaptureStackTrace,
ObjectDefineProperty,
ObjectCreate,
ObjectEntries,
ObjectHasOwn,
ObjectPrototypeIsPrototypeOf,
ObjectSetPrototypeOf,
ReflectConstruct,
Symbol,
SymbolFor,
} = primordials;
@ -107,12 +108,14 @@ class DOMException {
);
const code = nameToCodeMapping[name] ?? 0;
this[_message] = message;
this[_name] = name;
this[_code] = code;
this[webidl.brand] = webidl.brand;
// execute Error constructor to have stack property and [[ErrorData]] internal slot
const error = ReflectConstruct(Error, [], new.target);
error[_message] = message;
error[_name] = name;
error[_code] = code;
error[webidl.brand] = webidl.brand;
ErrorCaptureStackTrace(this, DOMException);
return error;
}
get message() {

View file

@ -224,7 +224,7 @@ Deno.test({
fn() {
assert(util.types.isNativeError(new Error()));
assert(util.types.isNativeError(new TypeError()));
assert(!util.types.isNativeError(new DOMException()));
assert(util.types.isNativeError(new DOMException()));
},
});

View file

@ -3594,16 +3594,13 @@
"DOMException-constructor-behavior.any.html": true,
"DOMException-constructor-behavior.any.worker.html": true,
"DOMException-custom-bindings.any.html": true,
"DOMException-custom-bindings.any.worker.html": true
"DOMException-custom-bindings.any.worker.html": true,
"exceptions.html": false
},
"class-string-interface.any.html": true,
"class-string-interface.any.worker.html": true,
"class-string-iterator-prototype-object.any.html": [
"Object.prototype.toString applied after deleting @@toStringTag"
],
"class-string-iterator-prototype-object.any.worker.html": [
"Object.prototype.toString applied after deleting @@toStringTag"
],
"class-string-iterator-prototype-object.any.html": true,
"class-string-iterator-prototype-object.any.worker.html": true,
"class-string-named-properties-object.window.html": false,
"global-immutable-prototype.any.html": [
"Setting to a different prototype"
@ -9754,7 +9751,6 @@
"structured-cloning-error-stack-optional.sub.window.html": [
"page-created Error (cross-site iframe)",
"page-created Error (same-origin iframe)",
"page-created DOMException (structuredClone())",
"page-created DOMException (cross-site iframe)",
"page-created DOMException (same-origin iframe)",
"JS-engine-created TypeError (cross-site iframe)",
@ -9762,8 +9758,7 @@
"web API-created TypeError (cross-site iframe)",
"web API-created TypeError (same-origin iframe)",
"web API-created DOMException (cross-site iframe)",
"web API-created DOMException (same-origin iframe)",
"page-created DOMException (worker)"
"web API-created DOMException (same-origin iframe)"
],
"transfer-errors.window.html": false,
"window-postmessage.window.html": false