use thiserror::Error; pub type CompileResult = Result; #[derive(Debug, Error)] pub enum CompileError { #[error("lexer error at position {pos}: {msg}")] Lex { pos: usize, msg: String }, #[error("parse error: {msg}")] Parse { msg: String }, #[error("codegen error: {msg}")] Codegen { msg: String }, }