dampen_core/expr/
error.rs1use crate::ir::span::Span;
2
3#[derive(Debug, Clone, PartialEq)]
5pub struct BindingError {
6 pub kind: BindingErrorKind,
7 pub message: String,
8 pub span: Span,
9 pub suggestion: Option<String>,
10}
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq)]
13pub enum BindingErrorKind {
14 UnknownField,
16
17 TypeMismatch,
19
20 UnknownMethod,
22
23 InvalidOperation,
25}
26
27impl std::fmt::Display for BindingError {
28 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
29 write!(
30 f,
31 "error[{}]: {} at line {}, column {}",
32 self.kind as u8, self.message, self.span.line, self.span.column
33 )?;
34 if let Some(suggestion) = &self.suggestion {
35 write!(f, "\n help: {}", suggestion)?;
36 }
37 Ok(())
38 }
39}