From 05524430f7c4eb472f4fa67170ba173710ca1aa2 Mon Sep 17 00:00:00 2001 From: Koby Date: Wed, 10 Jan 2024 19:31:24 +0100 Subject: [PATCH 1/2] fix: allow ast when macro errors --- compiler/noirc_frontend/src/hir/def_map/mod.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/compiler/noirc_frontend/src/hir/def_map/mod.rs b/compiler/noirc_frontend/src/hir/def_map/mod.rs index 9c46ef35854..3ac6f1167c7 100644 --- a/compiler/noirc_frontend/src/hir/def_map/mod.rs +++ b/compiler/noirc_frontend/src/hir/def_map/mod.rs @@ -90,14 +90,16 @@ impl CrateDefMap { let mut ast = ast.into_sorted(); for macro_processor in ¯o_processors { - ast = match macro_processor.process_untyped_ast(ast, &crate_id, context) { - Ok(ast) => ast, + match macro_processor.process_untyped_ast(ast, &crate_id, context) { + Ok(processed_ast) => { + ast = processed_ast; + } Err((error, file_id)) => { let def_error = DefCollectorErrorKind::MacroError(error); errors.push((def_error.into(), file_id)); return errors; } - }; + } } // Allocate a default Module for the root, giving it a ModuleId From 7345618c4d6eff2dfaccb6838d24fa7cbb5a14b5 Mon Sep 17 00:00:00 2001 From: Koby Date: Thu, 11 Jan 2024 15:25:17 +0100 Subject: [PATCH 2/2] avoid early return --- compiler/noirc_frontend/src/hir/def_map/mod.rs | 3 +-- compiler/noirc_frontend/src/parser/mod.rs | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/compiler/noirc_frontend/src/hir/def_map/mod.rs b/compiler/noirc_frontend/src/hir/def_map/mod.rs index f1f10d0a548..e86d4efede7 100644 --- a/compiler/noirc_frontend/src/hir/def_map/mod.rs +++ b/compiler/noirc_frontend/src/hir/def_map/mod.rs @@ -91,14 +91,13 @@ impl CrateDefMap { let mut ast = ast.into_sorted(); for macro_processor in ¯o_processors { - match macro_processor.process_untyped_ast(ast, &crate_id, context) { + match macro_processor.process_untyped_ast(ast.clone(), &crate_id, context) { Ok(processed_ast) => { ast = processed_ast; } Err((error, file_id)) => { let def_error = DefCollectorErrorKind::MacroError(error); errors.push((def_error.into(), file_id)); - return errors; } } } diff --git a/compiler/noirc_frontend/src/parser/mod.rs b/compiler/noirc_frontend/src/parser/mod.rs index a6c631895cd..0ff7819c00f 100644 --- a/compiler/noirc_frontend/src/parser/mod.rs +++ b/compiler/noirc_frontend/src/parser/mod.rs @@ -208,7 +208,7 @@ fn force<'a, T: 'a>(parser: impl NoirParser + 'a) -> impl NoirParser, pub functions: Vec, @@ -344,6 +344,7 @@ impl std::fmt::Display for SortedSubModule { } } +#[derive(Clone)] pub struct SortedSubModule { pub name: Ident, pub contents: SortedModule,