1use crisp_ast::Span;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum ErrorPassError {
6 #[error("[E0070] function `{name}` asserts `!never` but may produce `{produced}`")]
7 NeverViolated {
8 name: String,
9 produced: String,
10 span: Span,
11 },
12 #[error("[E0071] function `{name}` declares `!{declared}` but body may produce `{produced}`")]
13 DeclaredMismatch {
14 name: String,
15 declared: String,
16 produced: String,
17 span: Span,
18 },
19 #[error("[E0072] resolve error: {0}")]
20 Resolve(#[from] crisp_resolve::ResolveError),
21 #[error("[E0073] type error: {0}")]
22 Type(#[from] crisp_typeck::TypeError),
23}