From 3cc212aa5cd847963e768cc398cf494738325ce0 Mon Sep 17 00:00:00 2001 From: Jake Fecher Date: Wed, 29 May 2024 15:50:40 -0500 Subject: [PATCH] Fix global definition kind --- compiler/noirc_frontend/src/elaborator/patterns.rs | 2 +- compiler/noirc_frontend/src/elaborator/statements.rs | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/noirc_frontend/src/elaborator/patterns.rs b/compiler/noirc_frontend/src/elaborator/patterns.rs index b6d6cb2cf2d..12b0b7b5e64 100644 --- a/compiler/noirc_frontend/src/elaborator/patterns.rs +++ b/compiler/noirc_frontend/src/elaborator/patterns.rs @@ -79,7 +79,7 @@ impl<'context> Elaborator<'context> { HirPattern::Mutable(Box::new(pattern), location) } Pattern::Tuple(fields, span) => { - let field_types = match expected_type { + let field_types = match expected_type.follow_bindings() { Type::Tuple(fields) => fields, Type::Error => Vec::new(), expected_type => { diff --git a/compiler/noirc_frontend/src/elaborator/statements.rs b/compiler/noirc_frontend/src/elaborator/statements.rs index 9c50e7096dd..40de9a3983a 100644 --- a/compiler/noirc_frontend/src/elaborator/statements.rs +++ b/compiler/noirc_frontend/src/elaborator/statements.rs @@ -65,11 +65,13 @@ impl<'context> Elaborator<'context> { // To apply the changes from the fresh id created in elaborate_let to this global // we need to change the definition kind and update the type. - let definition_id = self.interner.get_global(global_id).definition_id; - self.interner.definition_mut(definition_id).kind = DefinitionKind::Global(global_id); - assert_eq!(new_ids.len(), 1, "Globals should only define 1 value"); - let definition_type = self.interner.definition_type(new_ids[0].id); + let new_id = new_ids[0].id; + + self.interner.definition_mut(new_id).kind = DefinitionKind::Global(global_id); + + let definition_id = self.interner.get_global(global_id).definition_id; + let definition_type = self.interner.definition_type(new_id); self.interner.push_definition_type(definition_id, definition_type); self.interner.replace_statement(statement_id, let_statement);