diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/njs_chb.c | 6 | ||||
-rw-r--r-- | src/njs_generator.c | 2 | ||||
-rw-r--r-- | src/njs_lexer.h | 10 | ||||
-rw-r--r-- | src/njs_object.h | 7 | ||||
-rw-r--r-- | src/njs_parser.c | 4 | ||||
-rw-r--r-- | src/njs_value.c | 17 | ||||
-rw-r--r-- | src/njs_variable.c | 2 | ||||
-rw-r--r-- | src/test/njs_unit_test.c | 3 |
8 files changed, 17 insertions, 34 deletions
diff --git a/src/njs_chb.c b/src/njs_chb.c index 3ee28009..ac88c0bd 100644 --- a/src/njs_chb.c +++ b/src/njs_chb.c @@ -251,7 +251,11 @@ njs_chb_destroy(njs_chb_t *chain) while (n != NULL) { next = n->next; - chain->free(chain->pool, n); + + if (chain->free != NULL) { + chain->free(chain->pool, n); + } + n = next; } } diff --git a/src/njs_generator.c b/src/njs_generator.c index a6209cce..e8c61c0a 100644 --- a/src/njs_generator.c +++ b/src/njs_generator.c @@ -5491,7 +5491,7 @@ njs_generate_reference_error(njs_vm_t *vm, njs_generator_t *generator, ref_err->type = NJS_OBJ_TYPE_REF_ERROR; - njs_lexer_entry(vm, node->u.reference.atom_id, &entry); + njs_atom_string_get(vm, node->u.reference.atom_id, &entry); return njs_name_copy(vm, &ref_err->u.name, &entry); } diff --git a/src/njs_lexer.h b/src/njs_lexer.h index 42f612a6..3728e253 100644 --- a/src/njs_lexer.h +++ b/src/njs_lexer.h @@ -288,16 +288,6 @@ const njs_lexer_keyword_entry_t *njs_lexer_keyword(const u_char *key, njs_int_t njs_lexer_keywords(njs_arr_t *array); -njs_inline void -njs_lexer_entry(njs_vm_t *vm, uintptr_t atom_id, njs_str_t *entry) -{ - njs_value_t value; - - njs_atom_to_value(vm, &value, atom_id); - njs_string_get(vm, &value, entry); -} - - njs_inline njs_bool_t njs_lexer_token_is_keyword(njs_lexer_token_t *token) { diff --git a/src/njs_object.h b/src/njs_object.h index 6b2438df..85e914d4 100644 --- a/src/njs_object.h +++ b/src/njs_object.h @@ -241,18 +241,17 @@ njs_key_string_get(njs_vm_t *vm, njs_value_t *key, njs_str_t *str) } -njs_inline njs_int_t +njs_inline void njs_atom_string_get(njs_vm_t *vm, uint32_t atom_id, njs_str_t *str) { njs_value_t value; if (njs_atom_to_value(vm, &value, atom_id) != NJS_OK) { - return NJS_ERROR; + str->start = (u_char *) "unknown"; + str->length = njs_length("unknown"); } njs_key_string_get(vm, &value, str); - - return NJS_OK; } diff --git a/src/njs_parser.c b/src/njs_parser.c index 50cee672..3cd56fdf 100644 --- a/src/njs_parser.c +++ b/src/njs_parser.c @@ -6702,7 +6702,6 @@ njs_parser_labelled_statement_after(njs_parser_t *parser, njs_int_t ret; njs_str_t str; uintptr_t atom_id; - njs_value_t entry; njs_parser_node_t *node; node = parser->node; @@ -6719,8 +6718,7 @@ njs_parser_labelled_statement_after(njs_parser_t *parser, atom_id = (uint32_t) (uintptr_t) parser->target; - njs_atom_to_value(parser->vm, &entry, atom_id); - njs_string_get(parser->vm, &entry, &str); + njs_atom_string_get(parser->vm, atom_id, &str); ret = njs_name_copy(parser->vm, &parser->node->name, &str); if (ret != NJS_OK) { diff --git a/src/njs_value.c b/src/njs_value.c index dcdab5a2..a097e575 100644 --- a/src/njs_value.c +++ b/src/njs_value.c @@ -560,7 +560,6 @@ njs_property_query(njs_vm_t *vm, njs_property_query_t *pq, njs_value_t *value, { uint32_t index; njs_int_t ret; - njs_value_t key; njs_object_t *obj; njs_function_t *function; @@ -607,19 +606,9 @@ njs_property_query(njs_vm_t *vm, njs_property_query_t *pq, njs_value_t *value, case NJS_UNDEFINED: case NJS_NULL: default: - ret = njs_atom_to_value(vm, &key, atom_id); - - if (njs_fast_path(ret == NJS_OK)) { - njs_string_get(vm, &key, &pq->lhq.key); - njs_type_error(vm, "cannot get property \"%V\" of %s", - &pq->lhq.key, njs_is_null(value) ? "null" - : "undefined"); - return NJS_ERROR; - } - - njs_type_error(vm, "cannot get property \"unknown\" of %s", - njs_is_null(value) ? "null" : "undefined"); - + njs_atom_string_get(vm, atom_id, &pq->lhq.key); + njs_type_error(vm, "cannot get property \"%V\" of %s", &pq->lhq.key, + njs_type_string(value->type)); return NJS_ERROR; } diff --git a/src/njs_variable.c b/src/njs_variable.c index 78bd2afb..40924ccf 100644 --- a/src/njs_variable.c +++ b/src/njs_variable.c @@ -239,7 +239,7 @@ njs_variable_scope_find(njs_parser_t *parser, njs_parser_scope_t *scope, failed: - njs_lexer_entry(parser->vm, atom_id, &entry); + njs_atom_string_get(parser->vm, atom_id, &entry); njs_parser_syntax_error(parser, "\"%V\" has already been declared", &entry); return NULL; diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 2227c0a6..27fcbd82 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -3923,6 +3923,9 @@ static njs_unit_test_t njs_test[] = { njs_str("delete this !== true"), njs_str("false") }, + { njs_str("undefined[Symbol()]"), + njs_str("TypeError: cannot get property \"Symbol()\" of undefined") }, + /* Object shorthand methods. */ { njs_str("var o = {m(){}}; new o.m();"), |