From 479e4932b5e1a694b82b3a43625d8e182455a01e Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 20 May 2020 09:43:16 +0200 Subject: [PATCH] src/tools/systemd/parse_time.rs: improve error message --- src/tools/systemd/parse_time.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/tools/systemd/parse_time.rs b/src/tools/systemd/parse_time.rs index a9f07467..2cd8d38c 100644 --- a/src/tools/systemd/parse_time.rs +++ b/src/tools/systemd/parse_time.rs @@ -193,7 +193,17 @@ fn parse_time_spec(i: &str) -> IResult<&str, (Vec, Vec Result { match all_consuming(parse_calendar_event_incomplete)(i) { - Err(err) => bail!("unable to parse calendar event: {}", err), + Err(nom::Err::Error(VerboseError { errors })) | + Err(nom::Err::Failure(VerboseError { errors })) => { + if errors.is_empty() { + bail!("unable to parse calendar event"); + } else { + bail!("unable to parse calendar event at '{}': {:?}", errors[0].0, errors[0].1); + } + } + Err(err) => { + bail!("unable to parse calendar event: {}", err); + } Ok((_, ce)) => Ok(ce), } } @@ -231,7 +241,7 @@ fn parse_calendar_event_incomplete(mut i: &str) -> IResult<&str, CalendarEvent> })); } "monthly" | "weekly" | "yearly" | "quarterly" | "semiannually" => { - unimplemented!(); + return Err(parse_error(i, "unimplemented date or time specification")); } _ => { /* continue */ } }