From: Dmitry Volyntsev Date: Tue, 1 Sep 2026 01:32:50 +0000 (-0700) Subject: Parser: remove the use_lhs parser flag X-Git-Tag: 1.0.2~86 X-Git-Url: https://git.kaiwu.me/?a=commitdiff_plain;h=cdfda468b1c05df3a4aea3dd6b894ee45142175f;p=njs.git Parser: remove the use_lhs parser flag Previously, use_lhs told njs_parser_exponentiation_expression() to skip the unary part and njs_parser_assignment_expression() to skip the arrow check, so that an expression could resume from an already parsed left-hand side. The fix is to remove it: its only writer went with the speculative "for" initializer parse. --- diff --git a/src/njs_parser.c b/src/njs_parser.c index ccb86ea0..0ee41ef6 100644 --- a/src/njs_parser.c +++ b/src/njs_parser.c @@ -560,8 +560,6 @@ njs_parser_init(njs_vm_t *vm, njs_parser_t *parser, njs_parser_scope_t *scope, lexer = &parser->lexer0; parser->lexer = lexer; - parser->use_lhs = 0; - return njs_lexer_init(vm, lexer, file, start, end); } @@ -3913,17 +3911,11 @@ njs_parser_exponentiation_expression(njs_parser_t *parser, { parser->target = NULL; - if (parser->use_lhs == 0) { - njs_parser_next(parser, njs_parser_unary_expression); + njs_parser_next(parser, njs_parser_unary_expression); - /* For UpdateExpression, see njs_parser_unary_expression_after. */ + /* For UpdateExpression, see njs_parser_unary_expression_after. */ - return NJS_OK; - } else { - parser->use_lhs = 0; - - return njs_parser_update_expression_post(parser, token, current); - } + return NJS_OK; } @@ -4576,16 +4568,14 @@ njs_parser_assignment_expression(njs_parser_t *parser, { njs_int_t ret; - if (!parser->use_lhs) { - ret = njs_parser_match_arrow_expression(parser, token); - if (ret == NJS_OK) { - njs_parser_next(parser, njs_parser_arrow_function); + ret = njs_parser_match_arrow_expression(parser, token); + if (ret == NJS_OK) { + njs_parser_next(parser, njs_parser_arrow_function); - return NJS_OK; + return NJS_OK; - } else if (ret == NJS_ERROR) { - return NJS_ERROR; - } + } else if (ret == NJS_ERROR) { + return NJS_ERROR; } njs_parser_next(parser, njs_parser_conditional_expression); diff --git a/src/njs_parser.h b/src/njs_parser.h index d21fcf6a..d3ae85bb 100644 --- a/src/njs_parser.h +++ b/src/njs_parser.h @@ -82,8 +82,6 @@ struct njs_parser_s { /* The ECMAScript [In] grammar parameter. */ uint8_t allow_in; - uint8_t use_lhs; - uint8_t module; njs_str_t file;