waddling-errors-macros 0.7.3

Procedural macros for structured error codes with compile-time validation and taxonomy enforcement
Documentation
//! Test: Invalid component name should fail compilation
//!
//! This test verifies that diag! with strict(component) validation
//! catches references to non-existent component enum variants.

use waddling_errors_macros::{component, diag, primary, sequence, setup};

setup! {
    components = crate::components,
    primaries = crate::primaries,
    sequences = crate::sequences,
}

// Define valid components
pub mod components {
    use waddling_errors_macros::component;

    component! {
        pub enum Component {
            Auth {
                docs: "Authentication component",
            },
            Api {
                docs: "API component",
            },
        }
    }

    // Re-export for validation
    pub use Component::*;
}

// Define valid primaries
pub mod primaries {
    use waddling_errors_macros::primary;

    primary! {
        pub enum Primary {
            Token {
                docs: "Token errors",
            },
        }
    }
}

// Define valid sequences
pub mod sequences {
    use waddling_errors_macros::sequence;

    sequence! {
        MISSING(1) {
            description: "Missing parameter",
            typical_severity: "Error",
        },
    }
}

// This should FAIL because Database component is not defined
diag! {
    strict(component),

    E.Database.Token.MISSING: {
        message: "This should fail - Database component doesn't exist",
    },
}

fn main() {}