From 8f37189d6fb2e3c75e4e6a168e1ae17c568fdc4c Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 31 Jan 2022 13:26:40 +0100 Subject: Fix incremental parsing bugs --- src/parse/mod.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/parse/mod.rs') diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 1131fec8..f666f4ad 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -68,7 +68,7 @@ pub fn parse_atomic( ) -> Option<(Vec, bool)> { let mut p = Parser::with_prefix(prefix, src, TokenMode::Code); primary(&mut p, true).ok()?; - p.consume_unterminated() + p.consume_open_ended() } /// Parse an atomic primary. Returns `Some` if all of the input was consumed. @@ -80,7 +80,7 @@ pub fn parse_atomic_markup( ) -> Option<(Vec, bool)> { let mut p = Parser::with_prefix(prefix, src, TokenMode::Markup); markup_expr(&mut p); - p.consume_unterminated() + p.consume_open_ended() } /// Parse a template literal. Returns `Some` if all of the input was consumed. @@ -919,3 +919,21 @@ fn comment(p: &mut Parser) -> ParseResult { _ => Err(ParseError), } } + +#[cfg(test)] +mod tests { + use std::fmt::Debug; + + #[track_caller] + pub fn check(src: &str, found: T, expected: T) + where + T: Debug + PartialEq, + { + if found != expected { + println!("source: {src:?}"); + println!("expected: {expected:#?}"); + println!("found: {found:#?}"); + panic!("test failed"); + } + } +} -- cgit v1.2.3