njs_generate_code(generator, njs_vmcode_2addr_t, to_prop_key,
NJS_VMCODE_TO_PROPERTY_KEY, 2, property);
+ prop_index = njs_generate_temp_index_get(vm, generator,
+ property);
+ if (njs_slow_path(prop_index == NJS_INDEX_ERROR)) {
+ return NJS_ERROR;
+ }
+
to_prop_key->src = property->index;
to_prop_key->dst = prop_index;
prop_set->object = object->index;
prop_set->property = prop_index;
+ if (prop_index != property->index) {
+ ret = njs_generate_index_release(vm, generator, prop_index);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
+ }
+ }
+
node->index = expr->index;
node->temporary = expr->temporary;
{ njs_str("var named = Symbol('xxx'); ({[named]: () => {}})[named].name"),
njs_str("[xxx]") },
+ { njs_str("var obj = {}; ({[obj](){}}); typeof obj"),
+ njs_str("object") },
+
{ njs_str("var called = false;"
"({"
" [{toString(){ if (called) throw 'OOps'; called = true; return 'a'}}](){}"