parser->node = NULL;
- njs_parser_next(parser, njs_parser_expression);
+ if (token->type != NJS_TOKEN_CLOSE_BRACE) {
+ njs_parser_next(parser, njs_parser_expression);
- return njs_parser_after(parser, current, node, 0,
- njs_parser_return_statement_after);
+ return njs_parser_after(parser, current, node, 0,
+ njs_parser_return_statement_after);
+ }
}
parser->node = node;
njs_lexer_token_t *token, njs_queue_link_t *current)
{
if (parser->ret != NJS_OK) {
- parser->node = parser->target;
- return njs_parser_stack_pop(parser);
+ njs_parser_syntax_error(parser, "Unexpected token \"%V\"",
+ &token->text);
+ return NJS_DONE;
}
if (njs_parser_expect_semicolon(parser, token) != NJS_OK) {
{ njs_str("\n{\nreturn;\n}"),
njs_str("SyntaxError: Illegal return statement in 3") },
+ { njs_str("function f () {return a +}"),
+ njs_str("SyntaxError: Unexpected token \"}\" in 1") },
+
+ { njs_str("`${function(){return n=>}}`"),
+ njs_str("SyntaxError: Unexpected token \"}\" in 1") },
+
+ { njs_str("(function(){return a +})"),
+ njs_str("SyntaxError: Unexpected token \"}\" in 1") },
+
{ njs_str("if (1) function f(){}"),
njs_str("SyntaxError: Functions can only be declared at top level or inside a block in 1") },