aboutsummaryrefslogtreecommitdiff
path: root/lib/xixanta/src/errors.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/xixanta/src/errors.rs')
-rw-r--r--lib/xixanta/src/errors.rs143
1 files changed, 0 insertions, 143 deletions
diff --git a/lib/xixanta/src/errors.rs b/lib/xixanta/src/errors.rs
deleted file mode 100644
index 544b9b4..0000000
--- a/lib/xixanta/src/errors.rs
+++ /dev/null
@@ -1,143 +0,0 @@
-use crate::SourceInfo;
-use std::fmt;
-
-#[derive(Debug, Clone, PartialEq)]
-pub enum Error {
- Parse(ParseError),
- Context(ContextError),
- Eval(EvalError),
-}
-
-impl From<ParseError> for Vec<Error> {
- fn from(err: ParseError) -> Self {
- vec![Error::Parse(err)]
- }
-}
-
-impl From<ParseError> for Vec<ParseError> {
- fn from(err: ParseError) -> Self {
- vec![err]
- }
-}
-
-impl From<ContextError> for Vec<Error> {
- fn from(err: ContextError) -> Self {
- vec![Error::Context(err)]
- }
-}
-
-impl From<EvalError> for Vec<Error> {
- fn from(err: EvalError) -> Self {
- vec![Error::Eval(err)]
- }
-}
-
-impl fmt::Display for Error {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- match self {
- Error::Parse(parse_error) => write!(f, "{}", parse_error),
- Error::Context(context_error) => write!(f, "{}", context_error),
- Error::Eval(eval_error) => write!(f, "{}", eval_error),
- }
- }
-}
-
-#[derive(Debug, Clone, PartialEq)]
-pub struct ParseError {
- pub line: usize,
- pub message: String,
- pub source: SourceInfo,
-}
-
-impl std::error::Error for ParseError {}
-
-impl fmt::Display for ParseError {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- if self.source.name.is_empty() {
- write!(f, "{} (line {})", self.message, self.line + 1)
- } else {
- write!(
- f,
- "{} ({}: line {})",
- self.message,
- self.source.name,
- self.line + 1
- )
- }
- }
-}
-
-#[derive(Debug, Clone, PartialEq)]
-pub struct ContextError {
- pub line: usize,
- pub message: String,
- pub global: bool,
- pub source: SourceInfo,
-}
-
-impl std::error::Error for ContextError {}
-
-impl fmt::Display for ContextError {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- if self.global {
- if self.source.name.is_empty() {
- write!(f, "{}", self.message)
- } else {
- write!(f, "{} ({})", self.message, self.source.name)
- }
- } else if self.source.name.is_empty() {
- write!(f, "{} (line {})", self.message, self.line + 1)
- } else {
- write!(
- f,
- "{} ({}: line {})",
- self.message,
- self.source.name,
- self.line + 1
- )
- }
- }
-}
-
-#[derive(Debug, Clone, PartialEq)]
-pub struct EvalError {
- pub line: usize,
- pub message: String,
- pub global: bool,
- pub source: SourceInfo,
-}
-
-impl std::error::Error for EvalError {}
-
-impl From<ContextError> for EvalError {
- fn from(err: ContextError) -> Self {
- EvalError {
- line: err.line,
- message: err.message,
- global: false,
- source: SourceInfo::default(), // TODO
- }
- }
-}
-
-impl fmt::Display for EvalError {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- if self.global {
- if self.source.name.is_empty() {
- write!(f, "{}", self.message)
- } else {
- write!(f, "{} ({})", self.message, self.source.name)
- }
- } else if self.source.name.is_empty() {
- write!(f, "{} (line {})", self.message, self.line + 1)
- } else {
- write!(
- f,
- "{} ({}: line {})",
- self.message,
- self.source.name,
- self.line + 1
- )
- }
- }
-}