use std::path::PathBuf;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, ParseError>;
#[derive(Error, Debug)]
pub enum ParseError {
#[error("failed to read file '{path}': {source}")]
IoError {
path: PathBuf,
#[source]
source: std::io::Error,
},
#[error("unsupported language for file '{0}'")]
UnsupportedLanguage(PathBuf),
#[error("parser error: {0}")]
ParserError(String),
#[error("query error: {0}")]
QueryError(String),
#[error("file is empty: '{0}'")]
EmptyFile(PathBuf),
}
impl ParseError {
pub fn io(path: impl Into<PathBuf>, source: std::io::Error) -> Self {
Self::IoError {
path: path.into(),
source,
}
}
}