diff options
Diffstat (limited to 'compiler/stable_mir/src/error.rs')
-rw-r--r-- | compiler/stable_mir/src/error.rs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/compiler/stable_mir/src/error.rs b/compiler/stable_mir/src/error.rs index 199106914..7085fa937 100644 --- a/compiler/stable_mir/src/error.rs +++ b/compiler/stable_mir/src/error.rs @@ -4,9 +4,13 @@ //! - [CompilerError]: This represents errors that can be raised when invoking the compiler. //! - [Error]: Generic error that represents the reason why a request that could not be fulfilled. -use std::convert::From; use std::fmt::{Debug, Display, Formatter}; -use std::{error, fmt}; +use std::{error, fmt, io}; + +macro_rules! error { + ($fmt: literal $(,)?) => { Error(format!($fmt)) }; + ($fmt: literal, $($arg:tt)*) => { Error(format!($fmt, $($arg)*)) }; + } /// An error type used to represent an error that has already been reported by the compiler. #[derive(Clone, Copy, PartialEq, Eq)] @@ -23,11 +27,11 @@ pub enum CompilerError<T> { } /// A generic error to represent an API request that cannot be fulfilled. -#[derive(Debug)] -pub struct Error(String); +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Error(pub(crate) String); impl Error { - pub(crate) fn new(msg: String) -> Self { + pub fn new(msg: String) -> Self { Self(msg) } } @@ -74,3 +78,9 @@ where impl error::Error for Error {} impl<T> error::Error for CompilerError<T> where T: Display + Debug {} + +impl From<io::Error> for Error { + fn from(value: io::Error) -> Self { + Error(value.to_string()) + } +} |