njs_inline njs_int_t
-njs_key_string_get(njs_vm_t *vm, const njs_value_t *key, njs_str_t *str)
+njs_key_string_get(njs_vm_t *vm, njs_value_t *key, njs_str_t *str)
{
- njs_int_t ret;
- njs_value_t dst;
+ njs_int_t ret;
if (njs_slow_path(njs_is_symbol(key))) {
- ret = njs_symbol_to_string(vm, &dst, key);
+ ret = njs_symbol_to_string(vm, key, key);
if (njs_slow_path(ret != NJS_OK)) {
return ret;
}
-
- key = &dst;
}
njs_string_get(key, str);
"while(n--) o[Symbol()] = 'test'; o[''];"),
njs_str("undefined") },
+ { njs_str("var symA = Symbol('A'); var obj = {[symA]:1}; Object.freeze(obj); "
+ "obj[symA] = 2"),
+ njs_str("TypeError: Cannot assign to read-only property \"Symbol(A)\" of object") },
+
+ { njs_str("var symA = Symbol('A'); var obj = {[symA]:1}; Object.freeze(obj); "
+ "delete obj[symA]"),
+ njs_str("TypeError: Cannot delete property \"Symbol(A)\" of object") },
+
{ njs_str("["
" Object.prototype,"
" Symbol.prototype,"