return ret;
}
- ret = njs_generate_statement(vm, generator, node->left);
+ ret = njs_generate_statement(vm, generator, node);
if (nxt_slow_path(ret != NXT_OK)) {
return ret;
}
}
}
- if (parser->node != NULL) {
- /* The statement is not empty block or just semicolon. */
-
- node = njs_parser_node_new(vm, parser, NJS_TOKEN_BLOCK);
- if (nxt_slow_path(node == NULL)) {
- return NJS_TOKEN_ERROR;
- }
-
- node->left = parser->node;
- node->right = NULL;
- parser->node = node;
+ node = njs_parser_node_new(vm, parser, NJS_TOKEN_BLOCK);
+ if (nxt_slow_path(node == NULL)) {
+ return NJS_TOKEN_ERROR;
}
+ node->left = parser->node;
+ node->right = NULL;
+ parser->node = node;
+
njs_parser_scope_end(vm, parser);
return njs_parser_token(vm, parser);
{ nxt_string("function f() { return 1; } { function f() { return 2; } { function f() { return 3; } }} f()"),
nxt_string("1") },
+ { nxt_string("{function f() {} {} f() }"),
+ nxt_string("undefined") },
+
{ nxt_string("{ var f; function f() {} }"),
nxt_string("SyntaxError: \"f\" has already been declared in 1") },