aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/njs_chb.c6
-rw-r--r--src/njs_generator.c2
-rw-r--r--src/njs_lexer.h10
-rw-r--r--src/njs_object.h7
-rw-r--r--src/njs_parser.c4
-rw-r--r--src/njs_value.c17
-rw-r--r--src/njs_variable.c2
-rw-r--r--src/test/njs_unit_test.c3
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();"),