crisp-errors 1.7.1

Fallibility analysis and CrispError enum synthesis (spec §9)
Documentation
use crisp_ast::Span;
use thiserror::Error;

#[derive(Debug, Error)]
pub enum ErrorPassError {
    #[error("[E0070] function `{name}` asserts `!never` but may produce `{produced}`")]
    NeverViolated {
        name: String,
        produced: String,
        span: Span,
    },
    #[error("[E0071] function `{name}` declares `!{declared}` but body may produce `{produced}`")]
    DeclaredMismatch {
        name: String,
        declared: String,
        produced: String,
        span: Span,
    },
    #[error("[E0072] resolve error: {0}")]
    Resolve(#[from] crisp_resolve::ResolveError),
    #[error("[E0073] type error: {0}")]
    Type(#[from] crisp_typeck::TypeError),
}