value = njs_arg(args, nargs, 1);
if (!njs_is_object(value)) {
- njs_type_error(vm, "cannot convert %s argument to object",
- njs_type_string(value->type));
- return NXT_ERROR;
+ if (njs_is_null_or_void(value)) {
+ njs_type_error(vm, "cannot convert %s argument to object",
+ njs_type_string(value->type));
+ return NXT_ERROR;
+ }
+
+ vm->retval = njs_value_void;
+ return NXT_OK;
}
prop = NULL;
ret = nxt_lvlhsh_find(&value->data.u.object->hash, &lhq);
if (ret != NXT_OK) {
- vm->retval = njs_string_void;
+ vm->retval = njs_value_void;
return NXT_OK;
}
.type = NJS_METHOD,
.name = njs_long_string("getOwnPropertyDescriptor"),
.value = njs_native_function(njs_object_get_own_property_descriptor, 0,
- NJS_SKIP_ARG, NJS_OBJECT_ARG,
+ NJS_SKIP_ARG, NJS_SKIP_ARG,
NJS_STRING_ARG),
},
nxt_string("undefined") },
{ nxt_string("Object.getOwnPropertyDescriptor(1, '0')"),
- nxt_string("TypeError: cannot convert number argument to object") },
+ nxt_string("undefined") },
+
+ { nxt_string("Object.getOwnPropertyDescriptor()"),
+ nxt_string("TypeError: cannot convert void argument to object") },
+
+ { nxt_string("Object.getOwnPropertyDescriptor(undefined)"),
+ nxt_string("TypeError: cannot convert void argument to object") },
{ nxt_string("Object.defineProperty(Object.freeze({}), 'b', {})"),
nxt_string("TypeError: object is not extensible") },