use thiserror::Error;
#[derive(Debug, Error)]
pub enum CompilerError {
#[error("compilation requires at least one trusted host key")]
NoTrustedKeys,
#[error("invalid guest template: {0}")]
InvalidTemplate(String),
#[error("generation load failed: {0}")]
GenerationLoad(String),
#[error("emitted module failed validation: {0}")]
Validation(String),
#[error("key table references missing chunk index {0}")]
MissingChunk(u32),
#[error("io error: {0}")]
Io(#[from] std::io::Error),
}
pub type Result<T> = core::result::Result<T, CompilerError>;
#[cfg(all(test, not(target_arch = "wasm32")))]
mod tests {
use super::*;
#[test]
fn no_trusted_keys_renders_documented_message() {
let e = CompilerError::NoTrustedKeys;
assert_eq!(
e.to_string(),
"compilation requires at least one trusted host key"
);
}
#[test]
fn invalid_template_carries_reason() {
let e = CompilerError::InvalidTemplate("missing export get_content".into());
assert!(e.to_string().contains("missing export get_content"));
}
}