Skip to main content

ironsbe_codegen/
error.rs

1//! Error types for code generation.
2
3use thiserror::Error;
4
5/// Error type for code generation operations.
6#[derive(Debug, Error)]
7pub enum CodegenError {
8    /// Schema parsing error.
9    #[error("schema parse error: {0}")]
10    Parse(#[from] ironsbe_schema::ParseError),
11
12    /// Schema validation error.
13    #[error("schema error: {0}")]
14    Schema(#[from] ironsbe_schema::SchemaError),
15
16    /// IO error.
17    #[error("IO error: {0}")]
18    Io(#[from] std::io::Error),
19
20    /// Code generation error.
21    #[error("generation error: {message}")]
22    Generation {
23        /// Error message.
24        message: String,
25    },
26
27    /// Unknown type reference.
28    #[error("unknown type '{type_name}' in field '{field}'")]
29    UnknownType {
30        /// Type name.
31        type_name: String,
32        /// Field name.
33        field: String,
34    },
35}
36
37impl CodegenError {
38    /// Creates a generation error with the given message.
39    pub fn generation(message: impl Into<String>) -> Self {
40        Self::Generation {
41            message: message.into(),
42        }
43    }
44}