morok-codegen 0.1.0-alpha.2

Backend code generation for the Morok ML compiler
Documentation
//! Error types for code generation.

use snafu::Snafu;

pub type Result<T, E = Error> = std::result::Result<T, E>;

/// Errors that can occur during code generation.
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
    /// Unsupported operation in the UOp graph.
    #[snafu(display("Unsupported operation: {op:?}"))]
    UnsupportedOp { op: String },

    /// Invalid UOp graph structure.
    #[snafu(display("Invalid UOp graph: {reason}"))]
    InvalidGraph { reason: String },

    /// Type error during code generation.
    #[snafu(display("Type error: {reason}"))]
    TypeError { reason: String },

    /// LLVM-specific error.
    #[snafu(display("LLVM error: {reason}"))]
    LlvmError { reason: String },

    /// Missing required information.
    #[snafu(display("Missing {what}"))]
    Missing { what: String },

    /// Invalid configuration or parameters.
    #[snafu(display("Invalid configuration: {reason}"))]
    InvalidConfig { reason: String },

    /// MLIR-specific error.
    #[snafu(display("MLIR error: {reason}"))]
    MlirError { reason: String },

    /// Error from IR layer.
    #[snafu(display("IR error: {source}"))]
    IrError {
        #[snafu(source)]
        source: morok_ir::Error,
    },
}