]> git.kaiwu.me - njs.git/commitdiff
Parser: refactor call argument setup.
authorDmitry Volyntsev <xeioex@nginx.com>
Sat, 28 Feb 2026 01:41:26 +0000 (17:41 -0800)
committerDmitry Volyntsev <xeioexception@gmail.com>
Mon, 2 Mar 2026 21:01:04 +0000 (13:01 -0800)
src/njs_parser.c

index e2d6f388d4c627ed151c37b996be5195088c7a4d..0f0ef751c525077c1787ab9c9d72917fec232eb2 100644 (file)
@@ -91,6 +91,9 @@ static njs_int_t njs_parser_member_expression_new_args(njs_parser_t *parser,
 
 static njs_parser_node_t *njs_parser_create_call(njs_parser_t *parser,
     njs_parser_node_t *node, uint8_t ctor);
+static njs_int_t njs_parser_call_arguments(njs_parser_t *parser,
+    njs_lexer_token_t *token, njs_queue_link_t *current,
+    njs_parser_node_t *func, njs_parser_state_func_t after);
 static njs_int_t njs_parser_call_expression(njs_parser_t *parser,
     njs_lexer_token_t *token, njs_queue_link_t *current);
 static njs_int_t njs_parser_call_expression_args(njs_parser_t *parser,
@@ -2615,14 +2618,8 @@ njs_parser_member_expression_new_after(njs_parser_t *parser,
         return NJS_ERROR;
     }
 
-    func->token_line = token->line;
-    parser->node = func;
-
-    njs_lexer_consume_token(parser->lexer, 1);
-    njs_parser_next(parser, njs_parser_arguments);
-
-    return njs_parser_after(parser, current, func, 1,
-                            njs_parser_member_expression_new_args);
+    return njs_parser_call_arguments(parser, token, current, func,
+                                     njs_parser_member_expression_new_args);
 }
 
 
@@ -2681,6 +2678,21 @@ njs_parser_create_call(njs_parser_t *parser, njs_parser_node_t *node,
 }
 
 
+static njs_int_t
+njs_parser_call_arguments(njs_parser_t *parser, njs_lexer_token_t *token,
+    njs_queue_link_t *current, njs_parser_node_t *func,
+    njs_parser_state_func_t after)
+{
+    func->token_line = token->line;
+    parser->node = func;
+
+    njs_lexer_consume_token(parser->lexer, 1);
+    njs_parser_next(parser, njs_parser_arguments);
+
+    return njs_parser_after(parser, current, func, 1, after);
+}
+
+
 static njs_int_t
 njs_parser_call_expression(njs_parser_t *parser, njs_lexer_token_t *token,
     njs_queue_link_t *current)
@@ -2737,14 +2749,8 @@ njs_parser_call_expression_args(njs_parser_t *parser, njs_lexer_token_t *token,
         return NJS_ERROR;
     }
 
-    func->token_line = token->line;
-    parser->node = func;
-
-    njs_lexer_consume_token(parser->lexer, 1);
-    njs_parser_next(parser, njs_parser_arguments);
-
-    return njs_parser_after(parser, current, func, 1,
-                            njs_parser_left_hand_side_expression_node);
+    return njs_parser_call_arguments(parser, token, current, func,
+                                     njs_parser_left_hand_side_expression_node);
 }
 
 
@@ -2769,14 +2775,8 @@ njs_parser_call_expression_after(njs_parser_t *parser,
             return NJS_ERROR;
         }
 
-        func->token_line = token->line;
-        parser->node = func;
-
-        njs_lexer_consume_token(parser->lexer, 1);
-        njs_parser_next(parser, njs_parser_arguments);
-
-        ret = njs_parser_after(parser, current, func, 1,
-                               njs_parser_left_hand_side_expression_node);
+        ret = njs_parser_call_arguments(parser, token, current, func,
+                                        njs_parser_left_hand_side_expression_node);
         if (ret != NJS_OK) {
             return NJS_ERROR;
         }