njs_str_t entry;
njs_vmcode_error_t *ref_err;
- if (njs_slow_path(!node->u.reference.not_defined)) {
+ entry = njs_str_value("unknown");
+
+ if (njs_slow_path(!node->not_defined)) {
njs_internal_error(vm, "variable is not defined but not_defined "
"is not set");
return NJS_ERROR;
}
}
- if (type == NJS_TOKEN_TYPEOF && node->token_type == NJS_TOKEN_NAME) {
- node->u.reference.type = NJS_TYPEOF;
- }
-
parser->target->left = parser->node;
parser->target->left->dest = parser->target;
parser->node = parser->target;
vr = &node->u.reference;
vr->atom_id = atom_id;
- vr->type = type;
parse_node.key = atom_id;
uint8_t ctor:1;
uint8_t hoist:1;
uint8_t array_flat:1;
+ uint8_t not_defined:1;
uint8_t temporary; /* 1 bit */
uint32_t token_line;
if (ref->variable == NULL) {
ref->variable = njs_variable_resolve(vm, node);
if (njs_slow_path(ref->variable == NULL)) {
- ref->not_defined = 1;
+ node->not_defined = 1;
return NULL;
}
}
closure = njs_variable_closure_test(node->scope, ref->variable->scope);
- ref->scope = node->scope;
ref_node.key = ref->atom_id;
typedef struct {
- njs_reference_type_t type;
uintptr_t atom_id;
njs_variable_t *variable;
- njs_parser_scope_t *scope;
- njs_bool_t not_defined;
} njs_variable_reference_t;