} else {
if (type == NJS_SCOPE_GLOBAL) {
type += NJS_INDEX_GLOBAL_OFFSET;
- scope->module = vm->options.module;
}
scope->next_index[0] = type;
if (nxt_lvlhsh_find(&scope->variables, lhq) == NXT_OK) {
var = lhq->value;
- if (!scope->module && scope->type != NJS_SCOPE_BLOCK) {
- return var;
- }
-
- if (type == NJS_VARIABLE_FUNCTION
- || var->type == NJS_VARIABLE_FUNCTION)
+ if (scope->module || scope->type == NJS_SCOPE_BLOCK
+ || (scope->type == NJS_SCOPE_GLOBAL && vm->options.module))
{
- njs_parser_syntax_error(vm, vm->parser,
- "\"%V\" has already been declared",
- &lhq->key);
- return NULL;
+ if (type == NJS_VARIABLE_FUNCTION
+ || var->type == NJS_VARIABLE_FUNCTION)
+ {
+ njs_parser_syntax_error(vm, vm->parser,
+ "\"%V\" has already been declared",
+ &lhq->key);
+ return NULL;
+ }
}
return var;