summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2024-12-06 10:10:11 +0100
committerGitHub <noreply@github.com>2024-12-06 10:10:11 +0100
commit9150505f46bc9cbe33e31ad4475aedbf0584a431 (patch)
tree6b70cbe728dc9d18f6f4e43ed181298467875b84
parent3f7035c4b294a41609b8562ace08a89b40225492 (diff)
parent9bcd25f54708c2d6bde79f266f1b74d432f4571f (diff)
Merge pull request #251 from jow-/fix-parsing-kwlabels-after-comments
lexer: Preserve keyword, regexp flags until processing non-comment to…
-rw-r--r--lexer.c6
-rw-r--r--tests/custom/99_bugs/51_preserve_lexer_flags20
2 files changed, 24 insertions, 2 deletions
diff --git a/lexer.c b/lexer.c
index 875e5dd..c9359b4 100644
--- a/lexer.c
+++ b/lexer.c
@@ -1176,8 +1176,10 @@ uc_lexer_next_token(uc_lexer_t *lex)
rv = lex_step(lex);
- lex->no_keyword = false;
- lex->no_regexp = false;
+ if (rv && rv->type != TK_COMMENT) {
+ lex->no_keyword = false;
+ lex->no_regexp = false;
+ }
return rv;
}
diff --git a/tests/custom/99_bugs/51_preserve_lexer_flags b/tests/custom/99_bugs/51_preserve_lexer_flags
new file mode 100644
index 0000000..aba646c
--- /dev/null
+++ b/tests/custom/99_bugs/51_preserve_lexer_flags
@@ -0,0 +1,20 @@
+Ensure keyword and regexp flags are preserved across comments when lexing
+object literals and division operators.
+
+-- Testcase --
+{%
+ printf("%.J\n", [
+ { /* comment */ default: true },
+ 4 /* comment */ /2/1
+ ]);
+%}
+-- End --
+
+-- Expect stdout --
+[
+ {
+ "default": true
+ },
+ 2
+]
+-- End --