]> git.kaiwu.me - quickjs.git/commitdiff
fixed regression in error message display introduced in commit 42eb279
authorFabrice Bellard <fabrice@bellard.org>
Sun, 12 Oct 2025 11:23:50 +0000 (13:23 +0200)
committerFabrice Bellard <fabrice@bellard.org>
Sun, 12 Oct 2025 11:23:50 +0000 (13:23 +0200)
quickjs-atom.h
quickjs.c
quickjs.h

index b598ec655ffb5c723d66bcf8b3ae243a81927667..23c2ed07a2d2c874817d7037a7ad62df73f9a7df 100644 (file)
@@ -256,6 +256,7 @@ DEF(SyntaxError, "SyntaxError")
 DEF(TypeError, "TypeError")
 DEF(URIError, "URIError")
 DEF(InternalError, "InternalError")
+DEF(AggregateError, "AggregateError")
 /* private symbols */
 DEF(Private_brand, "<brand>")
 /* symbols */
index 341d80675e76fbf53ee0c2f7cfb94f8507b4068e..908cf0d25eaf6d7c6eae302d278d44f95fd14350 100644 (file)
--- a/quickjs.c
+++ b/quickjs.c
@@ -38475,7 +38475,7 @@ static int JS_InstantiateFunctionListItem(JSContext *ctx, JSValueConst obj,
     case JS_DEF_PROP_UNDEFINED:
         val = JS_UNDEFINED;
         break;
-    case JS_DEF_PROP_SYMBOL:
+    case JS_DEF_PROP_ATOM:
         val = JS_AtomToValue(ctx, e->u.i32);
         break;
     case JS_DEF_PROP_BOOL:
@@ -40328,19 +40328,21 @@ static const JSCFunctionListEntry js_error_proto_funcs[] = {
 };
 
 /* 2 entries for each native error class */
+/* Note: we use an atom to avoid the autoinit definition which does
+   not work in get_prop_string() */
 static const JSCFunctionListEntry js_native_error_proto_funcs[] = {
 #define DEF(name) \
-    JS_PROP_STRING_DEF("name", name, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE ),\
+    JS_PROP_ATOM_DEF("name", name, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE ),\
     JS_PROP_STRING_DEF("message", "", JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE ),
     
-    DEF("EvalError")
-    DEF("RangeError")
-    DEF("ReferenceError")
-    DEF("SyntaxError")
-    DEF("TypeError")
-    DEF("URIError")
-    DEF("InternalError")
-    DEF("AggregateError")
+    DEF(JS_ATOM_EvalError)
+    DEF(JS_ATOM_RangeError)
+    DEF(JS_ATOM_ReferenceError)
+    DEF(JS_ATOM_SyntaxError)
+    DEF(JS_ATOM_TypeError)
+    DEF(JS_ATOM_URIError)
+    DEF(JS_ATOM_InternalError)
+    DEF(JS_ATOM_AggregateError)
 #undef DEF    
 };
 
@@ -49700,19 +49702,19 @@ static JSValue js_symbol_keyFor(JSContext *ctx, JSValueConst this_val,
 static const JSCFunctionListEntry js_symbol_funcs[] = {
     JS_CFUNC_DEF("for", 1, js_symbol_for ),
     JS_CFUNC_DEF("keyFor", 1, js_symbol_keyFor ),
-    JS_PROP_SYMBOL_DEF("toPrimitive", JS_ATOM_Symbol_toPrimitive, 0),
-    JS_PROP_SYMBOL_DEF("iterator", JS_ATOM_Symbol_iterator, 0),
-    JS_PROP_SYMBOL_DEF("match", JS_ATOM_Symbol_match, 0),
-    JS_PROP_SYMBOL_DEF("matchAll", JS_ATOM_Symbol_matchAll, 0),
-    JS_PROP_SYMBOL_DEF("replace", JS_ATOM_Symbol_replace, 0),
-    JS_PROP_SYMBOL_DEF("search", JS_ATOM_Symbol_search, 0),
-    JS_PROP_SYMBOL_DEF("split", JS_ATOM_Symbol_split, 0),
-    JS_PROP_SYMBOL_DEF("toStringTag", JS_ATOM_Symbol_toStringTag, 0),
-    JS_PROP_SYMBOL_DEF("isConcatSpreadable", JS_ATOM_Symbol_isConcatSpreadable, 0),
-    JS_PROP_SYMBOL_DEF("hasInstance", JS_ATOM_Symbol_hasInstance, 0),
-    JS_PROP_SYMBOL_DEF("species", JS_ATOM_Symbol_species, 0),
-    JS_PROP_SYMBOL_DEF("unscopables", JS_ATOM_Symbol_unscopables, 0),
-    JS_PROP_SYMBOL_DEF("asyncIterator", JS_ATOM_Symbol_asyncIterator, 0),
+    JS_PROP_ATOM_DEF("toPrimitive", JS_ATOM_Symbol_toPrimitive, 0),
+    JS_PROP_ATOM_DEF("iterator", JS_ATOM_Symbol_iterator, 0),
+    JS_PROP_ATOM_DEF("match", JS_ATOM_Symbol_match, 0),
+    JS_PROP_ATOM_DEF("matchAll", JS_ATOM_Symbol_matchAll, 0),
+    JS_PROP_ATOM_DEF("replace", JS_ATOM_Symbol_replace, 0),
+    JS_PROP_ATOM_DEF("search", JS_ATOM_Symbol_search, 0),
+    JS_PROP_ATOM_DEF("split", JS_ATOM_Symbol_split, 0),
+    JS_PROP_ATOM_DEF("toStringTag", JS_ATOM_Symbol_toStringTag, 0),
+    JS_PROP_ATOM_DEF("isConcatSpreadable", JS_ATOM_Symbol_isConcatSpreadable, 0),
+    JS_PROP_ATOM_DEF("hasInstance", JS_ATOM_Symbol_hasInstance, 0),
+    JS_PROP_ATOM_DEF("species", JS_ATOM_Symbol_species, 0),
+    JS_PROP_ATOM_DEF("unscopables", JS_ATOM_Symbol_unscopables, 0),
+    JS_PROP_ATOM_DEF("asyncIterator", JS_ATOM_Symbol_asyncIterator, 0),
 };
 
 /* Set/Map/WeakSet/WeakMap */
@@ -54447,9 +54449,12 @@ static int JS_AddIntrinsicBasicObjects(JSContext *ctx)
         JSValue func_obj;
         const JSCFunctionListEntry *funcs;
         int n_args;
+        char buf[ATOM_GET_STR_BUF_SIZE];
+        const char *name = JS_AtomGetStr(ctx, buf, sizeof(buf),
+                                         JS_ATOM_EvalError + i);
         n_args = 1 + (i == JS_AGGREGATE_ERROR);
         funcs = js_native_error_proto_funcs + 2 * i;
-        func_obj = JS_NewCConstructor(ctx, -1, funcs[0].u.str,
+        func_obj = JS_NewCConstructor(ctx, -1, name,
                                       ft.generic, n_args, JS_CFUNC_constructor_or_func_magic, i,
                                       obj,
                                       NULL, 0,
index 46cbb41571211bdbc0453d58c874fb7a666ae543..92cc000d0a72fa7e1d2f03288405d9fd4b98f463 100644 (file)
--- a/quickjs.h
+++ b/quickjs.h
@@ -1097,7 +1097,7 @@ typedef struct JSCFunctionListEntry {
 #define JS_DEF_PROP_UNDEFINED 7
 #define JS_DEF_OBJECT         8
 #define JS_DEF_ALIAS          9
-#define JS_DEF_PROP_SYMBOL   10
+#define JS_DEF_PROP_ATOM     10
 #define JS_DEF_PROP_BOOL     11
 
 /* Note: c++ does not like nested designators */
@@ -1112,7 +1112,7 @@ typedef struct JSCFunctionListEntry {
 #define JS_PROP_INT64_DEF(name, val, prop_flags) { name, prop_flags, JS_DEF_PROP_INT64, 0, .u = { .i64 = val } }
 #define JS_PROP_DOUBLE_DEF(name, val, prop_flags) { name, prop_flags, JS_DEF_PROP_DOUBLE, 0, .u = { .f64 = val } }
 #define JS_PROP_UNDEFINED_DEF(name, prop_flags) { name, prop_flags, JS_DEF_PROP_UNDEFINED, 0, .u = { .i32 = 0 } }
-#define JS_PROP_SYMBOL_DEF(name, val, prop_flags) { name, prop_flags, JS_DEF_PROP_SYMBOL, 0, .u = { .i32 = val } }
+#define JS_PROP_ATOM_DEF(name, val, prop_flags) { name, prop_flags, JS_DEF_PROP_ATOM, 0, .u = { .i32 = val } }
 #define JS_PROP_BOOL_DEF(name, val, prop_flags) { name, prop_flags, JS_DEF_PROP_BOOL, 0, .u = { .i32 = val } }
 #define JS_OBJECT_DEF(name, tab, len, prop_flags) { name, prop_flags, JS_DEF_OBJECT, 0, .u = { .prop_list = { tab, len } } }
 #define JS_ALIAS_DEF(name, from) { name, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, JS_DEF_ALIAS, 0, .u = { .alias = { from, -1 } } }