diff --git a/sv-parser-error/src/lib.rs b/sv-parser-error/src/lib.rs index 96ca1dd..d6f3ccf 100644 --- a/sv-parser-error/src/lib.rs +++ b/sv-parser-error/src/lib.rs @@ -7,29 +7,38 @@ use thiserror::Error; pub enum Error { #[error("IO error: {0}")] Io(#[from] std::io::Error), + #[error("File error: {path:?}")] File { #[source] source: std::io::Error, path: PathBuf, }, + #[error("Include error")] Include { #[from] source: Box, }, + #[error("Parse error: {0:?}")] Parse(Option<(PathBuf, usize)>), - #[error("Preprocess error")] - Preprocess, + + #[error("Preprocess error: {0:?}")] + Preprocess(Option<(PathBuf, usize)>), + #[error("Define argument not found: {0}")] DefineArgNotFound(String), + #[error("Define not found: {0}")] DefineNotFound(String), + #[error("Define must have argument")] DefineNoArgs, + #[error("Exceed recursive limit")] ExceedRecursiveLimit, + #[error("Include line can't have other items")] IncludeLine, } diff --git a/sv-parser-pp/src/preprocess.rs b/sv-parser-pp/src/preprocess.rs index 0093903..82bfb7c 100644 --- a/sv-parser-pp/src/preprocess.rs +++ b/sv-parser-pp/src/preprocess.rs @@ -226,19 +226,19 @@ pub fn preprocess_str, U: AsRef, V: BuildHasher>( let span = Span::new_extra(&s, SpanInfo::default()); let (_, pp_text) = all_consuming(pp_parser)(span).map_err(|x| match x { - nom::Err::Incomplete(_) => Error::Parse(None), + nom::Err::Incomplete(_) => Error::Preprocess(None), nom::Err::Error(e) => { if let Some(pos) = error_position(&e) { - Error::Parse(Some((PathBuf::from(path.as_ref()), pos))) + Error::Preprocess(Some((PathBuf::from(path.as_ref()), pos))) } else { - Error::Parse(None) + Error::Preprocess(None) } } nom::Err::Failure(e) => { if let Some(pos) = error_position(&e) { - Error::Parse(Some((PathBuf::from(path.as_ref()), pos))) + Error::Preprocess(Some((PathBuf::from(path.as_ref()), pos))) } else { - Error::Parse(None) + Error::Preprocess(None) } } })?;