From 2b6db0749aa0f8d0065b913dc15f9a617bed258c Mon Sep 17 00:00:00 2001 From: Tom French <15848336+TomAFrench@users.noreply.github.com> Date: Fri, 14 Feb 2025 15:09:03 +0000 Subject: [PATCH] chore: box `ParserError`s in `InterpreterError` (#7373) --- compiler/noirc_frontend/src/hir/comptime/errors.rs | 4 ++-- .../src/hir/comptime/interpreter/builtin/builtin_helpers.rs | 2 +- compiler/noirc_frontend/src/hir/comptime/value.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/noirc_frontend/src/hir/comptime/errors.rs b/compiler/noirc_frontend/src/hir/comptime/errors.rs index 0b9c1a5f675..db16a579c10 100644 --- a/compiler/noirc_frontend/src/hir/comptime/errors.rs +++ b/compiler/noirc_frontend/src/hir/comptime/errors.rs @@ -150,7 +150,7 @@ pub enum InterpreterError { location: Location, }, FailedToParseMacro { - error: ParserError, + error: Box, tokens: String, rule: &'static str, file: FileId, @@ -539,7 +539,7 @@ impl<'a> From<&'a InterpreterError> for CustomDiagnostic { let push_the_problem_on_the_library_author = "To avoid this error in the future, try adding input validation to your macro. Erroring out early with an `assert` can be a good way to provide a user-friendly error message".into(); - let mut diagnostic = CustomDiagnostic::from(error); + let mut diagnostic = CustomDiagnostic::from(error.as_ref()); // Swap the parser's primary note to become the secondary note so that it is // more clear this error originates from failing to parse a macro. let secondary = std::mem::take(&mut diagnostic.message); diff --git a/compiler/noirc_frontend/src/hir/comptime/interpreter/builtin/builtin_helpers.rs b/compiler/noirc_frontend/src/hir/comptime/interpreter/builtin/builtin_helpers.rs index 342f494023d..80251132421 100644 --- a/compiler/noirc_frontend/src/hir/comptime/interpreter/builtin/builtin_helpers.rs +++ b/compiler/noirc_frontend/src/hir/comptime/interpreter/builtin/builtin_helpers.rs @@ -523,7 +523,7 @@ where F: FnOnce(&mut Parser<'a>) -> T, { Parser::for_tokens(quoted).parse_result(parsing_function).map_err(|mut errors| { - let error = errors.swap_remove(0); + let error = Box::new(errors.swap_remove(0)); let tokens = tokens_to_string(tokens, interner); InterpreterError::FailedToParseMacro { error, tokens, rule, file: location.file } }) diff --git a/compiler/noirc_frontend/src/hir/comptime/value.rs b/compiler/noirc_frontend/src/hir/comptime/value.rs index d4866836dcd..a58a80fbd91 100644 --- a/compiler/noirc_frontend/src/hir/comptime/value.rs +++ b/compiler/noirc_frontend/src/hir/comptime/value.rs @@ -278,7 +278,7 @@ impl Value { Ok(expr) } Err(mut errors) => { - let error = errors.swap_remove(0); + let error = Box::new(errors.swap_remove(0)); let file = location.file; let rule = "an expression"; let tokens = tokens_to_string(tokens, elaborator.interner); @@ -608,7 +608,7 @@ where Ok(expr) } Err(mut errors) => { - let error = errors.swap_remove(0); + let error = Box::new(errors.swap_remove(0)); let file = location.file; let tokens = tokens_to_string(tokens, elaborator.interner); Err(InterpreterError::FailedToParseMacro { error, file, tokens, rule })