issuecraft_ql/
error.rs

1pub type ParseResult<T> = Result<T, ParseError>;
2
3#[derive(Debug, Clone, PartialEq, thiserror::Error)]
4pub enum ParseError {
5    #[error("Unexpected end of input")]
6    UnexpectedEof,
7
8    #[error("Unexpected token '{found}' at position {position}. Expected '{expected}'")]
9    UnexpectedToken {
10        expected: String,
11        found: String,
12        position: usize,
13    },
14
15    #[error("Invalid syntax: {message} at position {position}")]
16    InvalidSyntax { message: String, position: usize },
17
18    #[error("Invalid number format: {value} at position {position}")]
19    InvalidNumber { value: String, position: usize },
20
21    #[error("Invalid identifier '{value}' at position {position}")]
22    InvalidIdentifier { value: String, position: usize },
23
24    #[error("Unterminated string literal at position {position}")]
25    UnterminatedString { position: usize },
26
27    #[error("Invalid entity type '{value}' at position {position}")]
28    InvalidEntityType { value: String, position: usize },
29
30    #[error("Invalid priority '{value}' at position {position}")]
31    InvalidPriority { value: String, position: usize },
32
33    #[error("Missing clause '{clause}' at position {position}")]
34    MissingClause { clause: String, position: usize },
35
36    #[error("Invalid issue ID '{value}' at position {position}")]
37    InvalidIssueId { value: String, position: usize },
38
39    #[error("General Error: {0}")]
40    General(String),
41}