waddling-errors-macros 0.7.3

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

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

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

// Define a dummy component module for setup! macro
pub mod components {
    use waddling_errors_macros::component;

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

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

    primary! {
        pub enum Primary {
            Token {
                docs: "Authentication token errors",
                tags: ["security"],
            },

            Permission {
                docs: "Authorization errors",
                tags: ["security"],
            },
        }
    }
}

// Define a valid sequence for the test
pub mod sequences {
    use waddling_errors_macros::sequence;

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

// This should FAIL because NonExistent primary is not defined
diag! {
    strict(primary),

    E.Auth.NonExistent.MISSING: {
        message: "This should fail - NonExistent primary doesn't exist",
    },
}

fn main() {}