From: Dmitry Volyntsev Date: Wed, 27 Nov 2019 15:28:13 +0000 (+0300) Subject: Fixed TypeError message in ValidateAndApplyPropertyDescriptor(). X-Git-Tag: 0.3.8~42 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=d9d25629235107b53eeeefe204535b0529e63019;p=njs.git Fixed TypeError message in ValidateAndApplyPropertyDescriptor(). For Symbol key when object is not extensible. --- diff --git a/src/njs_object_prop.c b/src/njs_object_prop.c index b93d671d..0a8aa960 100644 --- a/src/njs_object_prop.c +++ b/src/njs_object_prop.c @@ -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; diff --git a/src/njs_value.c b/src/njs_value.c index 7ca818e0..fab95330 100644 --- a/src/njs_value.c +++ b/src/njs_value.c @@ -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; diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 8466f9eb..be3d5656 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -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") },