///|
pub suberror SourcedError {
SourcedError(error~ : Error?, loc~ : SourceLoc, msg~ : String)
} derive(Debug)
///|
pub impl Show for SourcedError with fn output(self, logger) {
match self {
SourcedError(error~, loc~, msg~) => {
if !msg.is_empty() {
logger.write_string("ensuring '\{msg}' ")
}
logger.write_string("failed ")
if error is Some(error) {
logger.write_string("with `\{error}` ")
}
logger.write_string("at \{loc}")
}
}
}
///|
#inline
#callsite(autofill(loc))
pub fn ensure(
cond : Bool,
error? : Error,
msg~ : String,
loc~ : SourceLoc,
) -> Unit raise SourcedError {
if !cond {
raise SourcedError(error~, loc~, msg~)
}
}