diff --git a/crates/biome_grit_parser/src/lexer/mod.rs b/crates/biome_grit_parser/src/lexer/mod.rs index 9e26c86d71ab..c14f86b4d68f 100644 --- a/crates/biome_grit_parser/src/lexer/mod.rs +++ b/crates/biome_grit_parser/src/lexer/mod.rs @@ -180,7 +180,7 @@ impl<'src> GritLexer<'src> { fn lex_token(&mut self, current: u8) -> GritSyntaxKind { match current { b'\n' | b'\r' => { - debug_assert!(self.consume_newline()); + self.consume_newline(); NEWLINE } b'\t' | b' ' => self.consume_whitespaces(), diff --git a/crates/biome_grit_parser/src/parser/mod.rs b/crates/biome_grit_parser/src/parser/mod.rs index 49ceb97cdc29..9f8000ecbbc0 100644 --- a/crates/biome_grit_parser/src/parser/mod.rs +++ b/crates/biome_grit_parser/src/parser/mod.rs @@ -3,6 +3,7 @@ mod literals; mod parse_error; mod patterns; mod predicates; +mod tests; use crate::constants::*; use crate::token_source::GritTokenSource; diff --git a/crates/biome_grit_parser/src/parser/tests.rs b/crates/biome_grit_parser/src/parser/tests.rs new file mode 100644 index 000000000000..5d795edc2c5f --- /dev/null +++ b/crates/biome_grit_parser/src/parser/tests.rs @@ -0,0 +1,11 @@ +#![cfg(test)] + +use crate::parse_grit; + +/// This pattern should be parseable, but previously caused explosive memory usage +#[test] +fn parse_language_declaration() { + let code = "language js\n"; + let parse = parse_grit(code); + assert!(parse.diagnostics().is_empty()); +}