From d9849af02b660b9aedaa27ed2e6fa594b73235db Mon Sep 17 00:00:00 2001 From: Vadim Zhestikov Date: Thu, 1 Jun 2023 09:39:25 -0700 Subject: [PATCH] Fixed parsing of invalid for-in statement. The issue was introduced in: b9d18d4dd34e --- src/njs_parser.c | 4 ++++ src/test/njs_unit_test.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/njs_parser.c b/src/njs_parser.c index 68743baa..6c093c77 100644 --- a/src/njs_parser.c +++ b/src/njs_parser.c @@ -5496,6 +5496,10 @@ njs_parser_for_expression_map_reparse(njs_parser_t *parser, { njs_str_t *text; + if (parser->ret != NJS_OK && parser->node != NULL) { + return njs_parser_failed(parser); + } + if (parser->node == NULL) { njs_lexer_in_fail_set(parser->lexer, 1); diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index db5e99bc..401fe558 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -2969,6 +2969,9 @@ static njs_unit_test_t njs_test[] = { njs_str("for (a(b * in d) ;"), njs_str("SyntaxError: Unexpected token \"in\" in 1") }, + { njs_str("for(c=let c"), + njs_str("SyntaxError: Unexpected token \"let\" in 1") }, + /* switch. */ { njs_str("switch"), -- 2.47.3