summaryrefslogtreecommitdiffstats
path: root/compiler/stable_mir/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/stable_mir/src/error.rs')
-rw-r--r--compiler/stable_mir/src/error.rs20
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())
+ }
+}