From 343bcfdfaaba32b7a46e1a945a4538e72d166ea8 Mon Sep 17 00:00:00 2001 From: Stanisław Zagórowski Date: Thu, 11 Jan 2024 02:20:44 +0100 Subject: huh whuh --- src/error.rs | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/error.rs (limited to 'src/error.rs') 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 for ReluaxError { + fn from(err: LuaXError) -> Self { + ReluaxError::LuaX(err) + } +} + +impl From for ReluaxError { + fn from(err: rlua::Error) -> Self { + ReluaxError::Lua(err) + } +} -- cgit v1.3.1