return NXT_ERROR;
}
- } else if (!njs_is_function(&prop->setter)) {
+ } else {
+ if (njs_is_function(&prop->setter)) {
+ return njs_function_call(vm, njs_function(&prop->setter),
+ object, value, 1, &vm->retval);
+ }
+
njs_type_error(vm,
"Cannot set property \"%V\" of %s which has only a getter",
&pq.lhq.key, njs_type_string(object->type));
break;
}
- if (njs_is_function(&prop->setter)) {
- return njs_function_call(vm, njs_function(&prop->setter),
- object, value, 1, &vm->retval);
- }
-
goto found;
case NJS_PROPERTY_REF:
"Object.defineProperty(o, 'a', {get:()=>1}); o.a = 2"),
nxt_string("TypeError: Cannot set property \"a\" of object which has only a getter") },
+ { nxt_string("var o = Object.create(Object.defineProperty({}, 'x', { set: function(v) { this.y = v; }})); "
+ "o.x = 123; Object.getOwnPropertyDescriptor(o, 'y').value"),
+ nxt_string("123") },
+
{ nxt_string("var o = {};"
"Object.defineProperty(o, 'a', { configurable: true, value: 0 });"
"Object.defineProperty(o, 'a', { value: 1 });"