diff --git a/Cargo.lock b/Cargo.lock index 302f0154..7b278b4b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2721,6 +2721,7 @@ dependencies = [ "indexmap", "itertools", "k256", + "miette", "num-bigint", "num-integer", "num-traits", diff --git a/crates/uplc/Cargo.toml b/crates/uplc/Cargo.toml index f3af7ca3..87e367e1 100644 --- a/crates/uplc/Cargo.toml +++ b/crates/uplc/Cargo.toml @@ -20,6 +20,7 @@ hex = "0.4.3" indexmap = "1.9.2" itertools = "0.10.5" k256 = { version = "0.13.0", optional = true } +miette = "5.5.0" num-bigint = "0.4.3" num-integer = "0.1.45" num-traits = "0.2.15" diff --git a/crates/uplc/src/machine/error.rs b/crates/uplc/src/machine/error.rs index f480b6ab..302fcd4d 100644 --- a/crates/uplc/src/machine/error.rs +++ b/crates/uplc/src/machine/error.rs @@ -6,13 +6,13 @@ use crate::ast::{NamedDeBruijn, Term, Type}; use super::{ExBudget, Value}; -#[derive(thiserror::Error, Debug)] +#[derive(thiserror::Error, Debug, miette::Diagnostic)] pub enum Error { #[error("Over budget mem: {} & cpu: {}", .0.mem, .0.cpu)] OutOfExError(ExBudget), #[error("Invalid Stepkind: {0}")] InvalidStepKind(u8), - #[error("Cannot evaluate an open term:\n\n{0}")] + #[error("Cannot evaluate an open term:\\n\\n{}", .0.to_pretty())] OpenTermEvaluated(Term), #[error("The provided Plutus code called 'error'.")] EvaluationFailure, diff --git a/crates/uplc/src/tx/error.rs b/crates/uplc/src/tx/error.rs index 2192ada2..92fbcef3 100644 --- a/crates/uplc/src/tx/error.rs +++ b/crates/uplc/src/tx/error.rs @@ -1,6 +1,6 @@ use crate::machine::{self, cost_model::ExBudget}; -#[derive(thiserror::Error, Debug)] +#[derive(thiserror::Error, Debug, miette::Diagnostic)] pub enum Error { #[error("{0}")] Address(#[from] pallas_addresses::Error),