mst_parser/error.rs
1/* src/error.rs */
2
3/// Errors that can occur during template parsing.
4#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
5pub enum Error {
6 /// The recursion depth exceeded `Limits::max_depth`.
7 #[error("recursion depth exceeded (limit: {limit}) at byte {offset}")]
8 DepthExceeded {
9 /// The depth limit that was exceeded.
10 limit: usize,
11 /// The byte offset where the error occurred.
12 offset: usize,
13 },
14
15 /// The total number of AST nodes exceeded `Limits::max_nodes`.
16 #[error("node limit exceeded (limit: {limit}) at byte {offset}")]
17 NodeLimitExceeded {
18 /// The node count limit that was exceeded.
19 limit: usize,
20 /// The byte offset where the error occurred.
21 offset: usize,
22 },
23
24 /// A variable tag `{{` was opened but never closed with `}}`.
25 #[error("unclosed variable tag at byte {offset}")]
26 UnclosedVariable {
27 /// The byte offset of the unclosed `{{`.
28 offset: usize,
29 },
30
31 /// A variable tag was empty, e.g. `{{}}`.
32 #[error("empty variable tag at byte {offset}")]
33 EmptyVariable {
34 /// The byte offset of the empty variable tag `{{`.
35 offset: usize,
36 },
37
38 /// Unbalanced tag nesting detected.
39 #[error("unbalanced tag nesting at byte {offset}")]
40 UnbalancedTag {
41 /// The byte offset where the imbalance was detected.
42 offset: usize,
43 },
44}