From e6c5335d43bfbf2fffa3d3c44cde404c970e5ee6 Mon Sep 17 00:00:00 2001 From: John Turner Date: Fri, 14 Nov 2025 20:04:27 +0000 Subject: disallow trailing delimiter in SeparatedBy combinator --- src/lib.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index acf2dcc..7c1bbcc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -262,7 +262,10 @@ where }; let rest = match self.delimiter.check(rest.clone()) { - Ok((rest, _)) => rest, + Ok((rest, _)) => match self.parser.check(rest.clone()) { + Ok(_) => rest, + Err(_) => return Some(Err(EM::bind(|| rest))), + }, _ => rest, }; @@ -1029,6 +1032,20 @@ mod test { .unwrap(); } + #[test] + fn test_separated_list_with_trailing_delimiter() { + let input = "1.0."; + let it = InputIter::new(input); + + assert!( + numeric1() + .separated_by(tag(".")) + .at_least(1) + .check_finished(it) + .is_err() + ); + } + #[test] fn test_find() { let input = "hello world"; -- cgit v1.2.3