]> git.kaiwu.me - njs.git/commitdiff
Fixed TypeError message in ValidateAndApplyPropertyDescriptor().
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 27 Nov 2019 15:28:13 +0000 (18:28 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Wed, 27 Nov 2019 15:28:13 +0000 (18:28 +0300)
For Symbol key when object is not extensible.

src/njs_object_prop.c
src/njs_value.c
src/test/njs_unit_test.c

index b93d671d0525278e47401bca8304642f579158eb..0a8aa960cd8b25aa7d9a7013f528dd1e36c2b651 100644 (file)
@@ -158,6 +158,7 @@ njs_object_prop_define(njs_vm_t *vm, njs_value_t *object,
     if (njs_fast_path(ret == NJS_DECLINED)) {
 
         if (!njs_object(object)->extensible) {
+            njs_key_string_get(vm, &pq.key,  &pq.lhq.key);
             njs_type_error(vm, "Cannot add property \"%V\", "
                            "object is not extensible", &pq.lhq.key);
             return NJS_ERROR;
index 7ca818e0265e309f24bda00e123ddd89075c47af..fab95330b19dc0fe51e8b46fac9855eceec97871 100644 (file)
@@ -1125,6 +1125,7 @@ njs_value_property_set(njs_vm_t *vm, njs_value_t *value, njs_value_t *key,
     }
 
     if (njs_slow_path(!njs_object(value)->extensible)) {
+        njs_key_string_get(vm, &pq.key,  &pq.lhq.key);
         njs_type_error(vm, "Cannot add property \"%V\", "
                        "object is not extensible", &pq.lhq.key);
         return NJS_ERROR;
index 8466f9eb5a54252d407898bd223e4434251d6ccb..be3d56569fa7f9e8c364ccc3991bd8899c0cd76a 100644 (file)
@@ -11962,6 +11962,10 @@ static njs_unit_test_t  njs_test[] =
                  "Object.defineProperty(o, 'b', {value:1})"),
       njs_str("TypeError: Cannot add property \"b\", object is not extensible") },
 
+    { njs_str("var o = Object.preventExtensions({});"
+                 "Object.defineProperty(o, Symbol.unscopables, {})"),
+      njs_str("TypeError: Cannot add property \"Symbol(Symbol.unscopables)\", object is not extensible") },
+
     { njs_str("var o = Object.preventExtensions({a:1});"
                  "Object.defineProperties(o, {b:{value:1}})"),
       njs_str("TypeError: Cannot add property \"b\", object is not extensible") },
@@ -11975,6 +11979,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("var o = Object.preventExtensions({a:1}); o.b = 1; o.b"),
       njs_str("TypeError: Cannot add property \"b\", object is not extensible") },
 
+    { njs_str("var o = Object.preventExtensions({a:1}); o[Symbol.unscopables] = 1"),
+      njs_str("TypeError: Cannot add property \"Symbol(Symbol.unscopables)\", object is not extensible") },
+
     { njs_str("Object.preventExtensions()"),
       njs_str("undefined") },