1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! 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() {}