]> git.kaiwu.me - njs.git/commitdiff
Fixed division token in lexer.
authorhongzhidao <hongzhidao@gmail.com>
Wed, 21 Aug 2019 02:59:38 +0000 (22:59 -0400)
committerhongzhidao <hongzhidao@gmail.com>
Wed, 21 Aug 2019 02:59:38 +0000 (22:59 -0400)
src/njs_lexer.c
src/test/njs_unit_test.c

index 76b840e5e8091e960f147e7a4282660659a138b4..617264075367bc16d64bbc906322ebc52788d24c 100644 (file)
@@ -504,7 +504,7 @@ njs_lexer_next_token(njs_lexer_t *lexer, njs_lexer_token_t *lt)
             token = njs_lexer_division(lexer, token);
 
             if (token != NJS_TOKEN_AGAIN) {
-                return token;
+                goto done;
             }
 
             continue;
@@ -557,8 +557,7 @@ njs_lexer_next_token(njs_lexer_t *lexer, njs_lexer_token_t *lt)
             /* Fall through. */
 
         default:
-            lt->text.length = lexer->start - lt->text.start;
-            return token;
+            goto done;
         }
 
     multi:
@@ -566,9 +565,13 @@ njs_lexer_next_token(njs_lexer_t *lexer, njs_lexer_token_t *lt)
         return njs_lexer_multi(lexer, lt, token, n, multi);
     }
 
+    token = NJS_TOKEN_END;
+
+done:
+
     lt->text.length = lexer->start - lt->text.start;
 
-    return NJS_TOKEN_END;
+    return token;
 }
 
 
index 24a435383861180d06b2da8e602483718b43c259..43ec8640d2e9b467f9408b784123e96054060eb2 100644 (file)
@@ -66,6 +66,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("var \n a, \n b; b"),
       njs_str("undefined") },
 
+    { njs_str("var a / ="),
+      njs_str("SyntaxError: Unexpected token \"/\" in 1") },
+
     { njs_str("var a = 1; var b; a"),
       njs_str("1") },