]> git.kaiwu.me - njs.git/commitdiff
A line number in error messages was incorrect if a script
authorIgor Sysoev <igor@sysoev.ru>
Thu, 21 Jul 2016 18:42:58 +0000 (21:42 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Thu, 21 Jul 2016 18:42:58 +0000 (21:42 +0300)
has comments.

njs/njs_lexer.c
njs/test/njs_unit_test.c

index 94a0c914b1a937f3971089a100f13a2c5d0b9ec3..3976c2629e61fb37d59c4c3eac524c11ae853bb4 100644 (file)
@@ -636,8 +636,9 @@ njs_lexer_division(njs_lexer_t *lexer, njs_token_t token)
 
             for (p = lexer->start; p < lexer->end; p++) {
 
-                if (*p == '\r' || *p == '\n') {
+                if (*p == '\n') {
                     lexer->start = p + 1;
+                    lexer->line++;
                     return NJS_TOKEN_LINE_END;
                 }
             }
@@ -647,6 +648,11 @@ njs_lexer_division(njs_lexer_t *lexer, njs_token_t token)
 
             for (p = lexer->start; p < lexer->end; p++) {
 
+                if (*p == '\n') {
+                    lexer->line++;
+                    continue;
+                }
+
                 if (*p == '*') {
                     p++;
 
index a9ebabba93f3416370541051aa1f43a98fa7e732..ca2f95db7abe197eee19a713eca9e1e899653af3 100644 (file)
@@ -52,6 +52,12 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("var + a"),
       nxt_string("SyntaxError: Unexpected token \"+\" in 1") },
 
+    { nxt_string("//\r\n; var + a"),
+      nxt_string("SyntaxError: Unexpected token \"+\" in 2") },
+
+    { nxt_string("/*\n*/; var + a"),
+      nxt_string("SyntaxError: Unexpected token \"+\" in 2") },
+
     { nxt_string("var \n a \n = 1; a"),
       nxt_string("1") },