lexer->prev_start = lexer->start;
- if (lexer->lexer_token != NULL) {
- lexer->prev_token = lexer->lexer_token->token;
- nxt_mp_free(vm->mem_pool, lexer->lexer_token);
- }
-
if (nxt_queue_is_empty(&lexer->preread)) {
lt = njs_lexer_token_push(vm, lexer);
if (nxt_slow_path(lt == NULL)) {
}
}
- lexer->lexer_token = njs_lexer_token_pop(lexer);
+ lt = njs_lexer_token_pop(lexer);
+
+ if (lexer->lexer_token != NULL && lexer->lexer_token != lt) {
+ lexer->prev_token = lexer->lexer_token->token;
+ nxt_mp_free(vm->mem_pool, lexer->lexer_token);
+ }
+
+ lexer->lexer_token = lt;
return njs_lexer_token_name_resolve(lexer, lexer->lexer_token);
}
#define njs_lexer_rollback(lexer) \
do { \
nxt_queue_insert_head(&(lexer)->preread, &(lexer)->lexer_token->link); \
- (lexer)->lexer_token = NULL; \
} while (0)
/* automatic semicolon insertion. */
+ { nxt_string("(a\n--"),
+ nxt_string("SyntaxError: Unexpected token \"--\" in 2") },
+
+ { nxt_string("(a\n++"),
+ nxt_string("SyntaxError: Unexpected token \"++\" in 2") },
+
{ nxt_string("var x = 0, y = 2; x\n--\ny; [x,y]"),
nxt_string("0,1") },