Merge pull request #150 from yuankunzhang/minor-fix

fix: check whether the parsed time contains timezone
This commit is contained in:
Daniel Hofstetter
2025-06-14 15:10:44 +02:00
committed by GitHub
+16 -1
View File
@@ -258,10 +258,18 @@ pub fn parse(input: &mut &str) -> ModalResult<Vec<Item>> {
if time_seen {
return Err(expect_error(input, "time cannot appear more than once"));
}
time_seen = true;
if t.offset.is_some() {
if tz_seen {
return Err(expect_error(
input,
"timezone cannot appear more than once",
));
}
tz_seen = true;
}
time_seen = true;
}
Item::Year(_) => {
if year_seen {
@@ -591,6 +599,13 @@ mod tests {
.to_string()
.contains("timezone cannot appear more than once"));
let result = parse(&mut "m1y");
assert!(result.is_err());
assert!(result
.unwrap_err()
.to_string()
.contains("timezone cannot appear more than once"));
let result = parse(&mut "2025-05-19 abcdef");
assert!(result.is_err());
assert!(result.unwrap_err().to_string().contains("unexpected input"));