Skip to main content

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}