use crate::compiling::failing::message::Message;
use crate::compiling::failing::position_info::PositionInfo;
#[derive(Debug, Clone)]
pub enum Failure {
Quiet(PositionInfo),
Loud(Message)
}
impl Failure {
pub fn is_quiet(&self) -> bool {
matches!(self, Failure::Quiet(_))
}
pub fn is_loud(&self) -> bool {
matches!(self, Failure::Loud(_))
}
pub fn unwrap_quiet(self) -> PositionInfo {
match self {
Failure::Quiet(info) => info,
Failure::Loud(_) => panic!("Cannot quietly unwrap loud failure")
}
}
pub fn unwrap_loud(self) -> Message {
match self {
Failure::Quiet(_) => panic!("Cannot loudly unwrap quiet failure"),
Failure::Loud(message) => message
}
}
}