diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-11-14 20:04:27 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-11-14 20:04:27 +0000 |
| commit | e6c5335d43bfbf2fffa3d3c44cde404c970e5ee6 (patch) | |
| tree | 20636011c4c529c459f35563492aeba67aa4e4d3 /src | |
| parent | 73eec22d62291a8cf6c095e1bdb74e83a01c759d (diff) | |
| download | mon-e6c5335d43bfbf2fffa3d3c44cde404c970e5ee6.tar.gz | |
disallow trailing delimiter in SeparatedBy combinator
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -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, }; @@ -1030,6 +1033,20 @@ mod test { } #[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"; let it = InputIter::new(input); |
