]> git.kaiwu.me - njs.git/commitdiff
Parser: fixed parsing return statement without semicolon.
authorAlexander Borisov <alexander.borisov@nginx.com>
Tue, 14 Jul 2020 11:49:46 +0000 (14:49 +0300)
committerAlexander Borisov <alexander.borisov@nginx.com>
Tue, 14 Jul 2020 11:49:46 +0000 (14:49 +0300)
The issue was introduced in 86f55a7dc4a4.

This closes #330 issue on GitHub.

src/njs_parser.c
src/test/njs_unit_test.c

index af2a89483b21ef6d961bea2fe973b6897c543cc7..5fb5a86393703e817feaa8c3909eaaa9817757ce 100644 (file)
@@ -5719,6 +5719,7 @@ njs_parser_return_statement(njs_parser_t *parser, njs_lexer_token_t *token,
 
     switch (token->type) {
     case NJS_TOKEN_SEMICOLON:
+        njs_lexer_consume_token(parser->lexer, 1);
         break;
 
     case NJS_TOKEN_LINE_END:
@@ -5741,8 +5742,6 @@ njs_parser_return_statement(njs_parser_t *parser, njs_lexer_token_t *token,
 
     parser->node = node;
 
-    njs_lexer_consume_token(parser->lexer, 1);
-
     return njs_parser_stack_pop(parser);
 }
 
index 65d0000cd4c06d9555c9d6b192e6d5708e6f573e..ba444b9a11cd6b846b9f313f9a48a0a9b9adfaf8 100644 (file)
@@ -2553,6 +2553,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("var x = 0, y = 2; x\n--\ny; [x,y]"),
       njs_str("0,1") },
 
+    { njs_str("function f() {return\n}"),
+      njs_str("undefined") },
+
     /* if. */
 
     { njs_str("if (0);"),