use crate::Output;
use std::error;
use std::path;
mod bad_input;
mod display;
mod eval_error;
mod modifier_parse_error;
mod parse_error;
mod rgb_parse_error;
pub use parse_error::ParseError;
pub type Result<T> = std::result::Result<T, Error>;
pub(crate) type ParseResult<T> = std::result::Result<T, ParseError>;
pub(crate) use bad_input::BadInput;
pub(crate) use eval_error::EvalError;
pub(crate) use modifier_parse_error::ModifierParseError;
pub(crate) use rgb_parse_error::RgbParseError;
pub(crate) type EvalResult<T> = std::result::Result<T, EvalError>;
pub(crate) type RgbParseResult<T> = std::result::Result<T, RgbParseError>;
#[derive(Debug)]
pub enum Error {
CellSyntaxError {
filename: path::PathBuf,
position: a1_notation::Address,
parse_error: Box<ParseError>,
},
CodeSyntaxError {
filename: path::PathBuf,
parse_error: Box<ParseError>,
},
EvalError {
message: String,
filename: path::PathBuf,
position: a1_notation::Address,
},
InitError(String),
ModifierSyntaxError {
filename: path::PathBuf,
parse_error: Box<ParseError>,
position: a1_notation::Address,
},
ObjectWriteError {
filename: path::PathBuf,
message: String,
},
SourceCodeError {
filename: path::PathBuf,
message: String,
},
TargetWriteError { message: String, output: Output },
}
impl error::Error for Error {}