MCPcopy Create free account
hub / github.com/GNOME/gjs / gjs_define_error_properties

Function gjs_define_error_properties

gi/gerror.cpp:274–304  ·  view source on GitHub ↗

define properties that JS Error exposes, such as fileName, lineNumber and stack

Source from the content-addressed store, hash-verified

272// define properties that JS Error exposes, such as fileName, lineNumber and
273// stack
274GJS_JSAPI_RETURN_CONVENTION
275bool gjs_define_error_properties(JSContext* cx, JS::HandleObject obj) {
276 JS::RootedObject frame(cx);
277 JS::RootedString stack(cx);
278 JS::RootedString source(cx);
279 uint32_t line;
280 JS::TaggedColumnNumberOneOrigin tagged_column;
281
282 if (!JS::CaptureCurrentStack(cx, &frame) ||
283 !JS::BuildStackString(cx, nullptr, frame, &stack))
284 return false;
285
286 auto ok = JS::SavedFrameResult::Ok;
287 if (JS::GetSavedFrameSource(cx, nullptr, frame, &source) != ok ||
288 JS::GetSavedFrameLine(cx, nullptr, frame, &line) != ok ||
289 JS::GetSavedFrameColumn(cx, nullptr, frame, &tagged_column) != ok) {
290 gjs_throw(cx, "Error getting saved frame information");
291 return false;
292 }
293
294 const GjsAtoms& atoms = GjsContextPrivate::atoms(cx);
295 return JS_DefinePropertyById(cx, obj, atoms.stack(), stack,
296 JSPROP_ENUMERATE) &&
297 JS_DefinePropertyById(cx, obj, atoms.file_name(), source,
298 JSPROP_ENUMERATE) &&
299 JS_DefinePropertyById(cx, obj, atoms.line_number(), line,
300 JSPROP_ENUMERATE) &&
301 JS_DefinePropertyById(cx, obj, atoms.column_number(),
302 tagged_column.oneOriginValue(),
303 JSPROP_ENUMERATE);
304}
305
306[[nodiscard]]
307static JSProtoKey proto_key_from_error_enum(int val) {

Callers 4

constructor_implMethod · 0.85
gjs_throw_gerrorFunction · 0.85
constructor_implMethod · 0.85

Calls 1

gjs_throwFunction · 0.85

Tested by

no test coverage detected