oca_file_semantics/ocafile/
error.rs1use thiserror::Error;
2
3#[derive(thiserror::Error, Debug, serde::Serialize)]
4#[serde(untagged)]
5pub enum ParseError {
6 #[error("Error at line {line_number} ({raw_line}): {message}")]
7 GrammarError {
8 #[serde(rename = "ln")]
9 line_number: usize,
10 #[serde(rename = "col")]
11 column_number: usize,
12 #[serde(rename = "c")]
13 raw_line: String,
14 #[serde(rename = "e")]
15 message: String,
16 },
17 #[error("Error parsing meta: {0}")]
18 MetaError(String),
19
20 #[error("Error parsing instruction: {0}")]
21 InstructionError(#[from] InstructionError),
22
23 #[error("{0}")]
24 Custom(String),
25}
26
27#[derive(Error, Debug, serde::Serialize)]
28pub enum InstructionError {
29 #[error("{0}")]
30 UnexpectedToken(String),
31
32 #[error("{0}")]
33 Parser(String),
34
35 #[error("{0}")]
36 Unknown(String),
37
38 #[error(transparent)]
39 ExtractError(#[from] ExtractingAttributeError),
40}
41
42#[derive(Error, Debug, serde::Serialize)]
43pub enum ExtractingAttributeError {
44 #[error("Said error: {0}")]
45 SaidError(#[from] said::error::Error),
46
47 #[error("Unexpected error: {0}")]
48 Unexpected(String),
49}