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
//! Test: Invalid sequence name should fail compilation
//!
//! This test verifies that diag! with strict(sequence) validation
//! catches references to non-existent sequence constants.
use waddling_errors_macros::{diag, sequence, setup};
// Set up path resolution so __wd_paths module is created
setup! {
components = crate::components,
primaries = crate::primaries,
sequences = crate::sequences,
}
// Define dummy components and primaries for setup! macro
pub mod components {
use waddling_errors_macros::component;
component! {
pub enum Component {
Auth {
docs: "Authentication",
},
}
}
}
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: "Required parameter missing",
typical_severity: "Error",
},
INVALID(3) {
description: "Validation failed",
typical_severity: "Error",
},
}
}
// This should FAIL because NONEXISTENT is not defined
diag! {
strict(sequence),
E.Auth.Token.NONEXISTENT: {
message: "This should fail - NONEXISTENT sequence doesn't exist",
},
}
fn main() {}