aboutsummaryrefslogtreecommitdiff
path: root/src/error.rs
diff options
context:
space:
mode:
authorStanisław Zagórowski <hasohasacz@gmail.com>2024-01-11 02:20:44 +0100
committerStanisław Zagórowski <hasohasacz@gmail.com>2024-01-11 02:20:44 +0100
commit343bcfdfaaba32b7a46e1a945a4538e72d166ea8 (patch)
treeed27311160054515b6375a9f92e092772300ee65 /src/error.rs
huh whuh
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs
new file mode 100644
index 0000000..39c8cce
--- /dev/null
+++ b/src/error.rs
@@ -0,0 +1,69 @@
+use std::fmt::{self, Display, Formatter};
+
+#[derive(Debug, Clone, Eq, PartialEq)]
+pub enum LuaXError {
+ InvalidStart, // used internally
+ MissingField(String),
+ WrongFieldType(String),
+ NonTableChildren,
+ UnexpectedCharacter(char),
+ UnexpectedToken(String),
+ NeededToken(String),
+ ExpectedVar,
+ ExpectedExpression,
+ UnterminatedStringLiteral,
+ InvalidEscapeSequence(char),
+ InvalidAssignmentTarget,
+}
+
+impl std::error::Error for LuaXError {}
+
+impl Display for LuaXError {
+ fn fmt(&self, f: &mut Formatter) -> fmt::Result {
+ match self {
+ LuaXError::InvalidStart => write!(f, "Invalid start"),
+ LuaXError::MissingField(field) => write!(f, "Missing required field: {}", field),
+ LuaXError::WrongFieldType(field) => write!(f, "Wrong field type: field {}", field),
+ LuaXError::NonTableChildren => write!(f, "Children must be tables"),
+ LuaXError::UnexpectedCharacter(c) => write!(f, "Unexpected character: '{}'", c),
+ LuaXError::UnexpectedToken(token) => write!(f, "Unexpected token: {}", token),
+ LuaXError::NeededToken(token) => write!(f, "Needed token: {}", token),
+ LuaXError::ExpectedVar => write!(f, "Expected variable"),
+ LuaXError::ExpectedExpression => write!(f, "Expected expression"),
+ LuaXError::UnterminatedStringLiteral => write!(f, "Unterminated string literal"),
+ LuaXError::InvalidEscapeSequence(c) => write!(f, "Invalid escape sequence: {}", c),
+ LuaXError::InvalidAssignmentTarget => write!(f, "Invalid assignment target"),
+ }
+ }
+}
+
+#[derive(Debug)]
+pub enum ReluaxError {
+ LuaX(LuaXError),
+ Lua(rlua::Error),
+ Server(String),
+}
+
+impl std::error::Error for ReluaxError {}
+
+impl Display for ReluaxError {
+ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+ match self {
+ ReluaxError::LuaX(err) => write!(f, "{}", err),
+ ReluaxError::Lua(err) => write!(f, "{}", err),
+ ReluaxError::Server(err) => write!(f, "{}", err),
+ }
+ }
+}
+
+impl From<LuaXError> for ReluaxError {
+ fn from(err: LuaXError) -> Self {
+ ReluaxError::LuaX(err)
+ }
+}
+
+impl From<rlua::Error> for ReluaxError {
+ fn from(err: rlua::Error) -> Self {
+ ReluaxError::Lua(err)
+ }
+}