]> git.kaiwu.me - njs.git/commitdiff
Fixed parsing multiline comments.
authorDmitry Volyntsev <xeioex@nginx.com>
Tue, 29 Jan 2019 15:15:03 +0000 (18:15 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Tue, 29 Jan 2019 15:15:03 +0000 (18:15 +0300)
njs/njs_lexer.c
njs/test/njs_interactive_test.c
njs/test/njs_unit_test.c

index 3ea7495d85c1c84402949efd95cd4cb77e672e9e..adb643964bed9848552fda8f59ad6f5d806e3629 100644 (file)
@@ -704,10 +704,8 @@ njs_lexer_division(njs_lexer_t *lexer, njs_token_t token)
                 }
 
                 if (*p == '*') {
-                    p++;
-
-                    if (p < lexer->end && *p == '/') {
-                        lexer->start = p + 1;
+                    if (p + 1 < lexer->end && p[1] == '/') {
+                        lexer->start = p + 2;
                         return NJS_TOKEN_AGAIN;
                     }
                 }
index 94d2a237aa11a225008322eceddef56a52166088..4cdd487927075e595a38949f753ae498e94caf32 100644 (file)
@@ -233,6 +233,23 @@ static njs_interactive_test_t  njs_test[] =
       nxt_string("TypeError: Cannot convert object to primitive value\n"
                  "    at main (native)\n") },
 
+    /* line numbers */
+
+    { nxt_string("/**/(function(){throw Error();})()" ENTER),
+      nxt_string("Error\n"
+                 "    at anonymous (:1)\n"
+                 "    at main (native)\n") },
+
+    { nxt_string("/***/(function(){throw Error();})()" ENTER),
+      nxt_string("Error\n"
+                 "    at anonymous (:1)\n"
+                 "    at main (native)\n") },
+
+    { nxt_string("/*\n**/(function(){throw Error();})()" ENTER),
+      nxt_string("Error\n"
+                 "    at anonymous (:2)\n"
+                 "    at main (native)\n") },
+
 };
 
 
index 046e6e844a86cec197106af981ce1e449d62409e..a9670817d9f23a881495610a079cf4e1dbb0fd5d 100644 (file)
@@ -28,6 +28,9 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("1}"),
       nxt_string("SyntaxError: Unexpected token \"}\" in 1") },
 
+    { nxt_string("/***/1/*\n**/"),
+      nxt_string("1") },
+
     /* Variable declarations. */
 
     { nxt_string("var x"),