use peg::error::ParseError; use roc_ast::ast_error::ASTError; use roc_module::module_err::ModuleError; use roc_parse::parser::SyntaxError; use snafu::Snafu; #[derive(Debug, Snafu)] #[snafu(visibility(pub))] #[allow(clippy::enum_variant_names)] pub enum DocsError { WrapASTError { #[snafu(backtrace)] source: ASTError, }, WrapModuleError { #[snafu(backtrace)] source: ModuleError, }, WrapSyntaxError { msg: String, }, WrapPegParseError { source: ParseError, }, } pub type DocsResult = std::result::Result; impl<'a> From> for DocsError { fn from(syntax_err: SyntaxError) -> Self { Self::WrapSyntaxError { msg: format!("{:?}", syntax_err), } } } impl From for DocsError { fn from(ast_err: ASTError) -> Self { Self::WrapASTError { source: ast_err } } } impl From for DocsError { fn from(module_err: ModuleError) -> Self { Self::WrapModuleError { source: module_err } } } impl From> for DocsError { fn from(peg_parse_err: ParseError) -> Self { Self::WrapPegParseError { source: peg_parse_err, } } }