From 1a016646d5621d8c951ca52bbdba36a962acb01c Mon Sep 17 00:00:00 2001 From: jackschu Date: Mon, 1 Jul 2024 01:06:45 -0400 Subject: [PATCH] automatic semicolon should be inserted for '1\n.2' --- src/scanner.c | 6 +++++- test/corpus/literals.txt | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/scanner.c b/src/scanner.c index d429fcba..79aaeb91 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -131,7 +131,6 @@ static bool scan_automatic_semicolon(TSLexer *lexer, bool comment_condition, boo switch (lexer->lookahead) { case ',': - case '.': case ':': case ';': case '*': @@ -148,6 +147,11 @@ static bool scan_automatic_semicolon(TSLexer *lexer, bool comment_condition, boo case '/': return false; + // Insert a semicolon before decimals literals but not otherwise. + case '.': + skip(lexer); + return iswdigit(lexer->lookahead); + // Insert a semicolon before `--` and `++`, but not before binary `+` or `-`. case '+': skip(lexer); diff --git a/test/corpus/literals.txt b/test/corpus/literals.txt index b5a54456..4a617652 100644 --- a/test/corpus/literals.txt +++ b/test/corpus/literals.txt @@ -13,6 +13,7 @@ Numbers 0b1_000_000 1_2_3 12_3.4_5e6_7 +.4_5e6_7 0b1_000_000n 01 00000123 @@ -33,6 +34,7 @@ Numbers (expression_statement (number)) (expression_statement (number)) (expression_statement (number)) + (expression_statement (number)) (expression_statement (number))) ============================================