diff --git a/src/protocol/parser/mod.rs b/src/protocol/parser/mod.rs index e300c088734e6e4231b82efa89b05ec0a25d4777..e23b69169d47007e1d58c8c94af6f6786a6a0822 100644 --- a/src/protocol/parser/mod.rs +++ b/src/protocol/parser/mod.rs @@ -211,21 +211,25 @@ impl Parser { for module_idx in 0..self.modules.len() { let mut ctx = visitor::Ctx{ heap: &mut self.heap, - module: &mut self.modules[module_idx], + modules: &mut self.modules, + module_idx, symbols: &mut self.symbol_table, types: &mut self.type_table, + arch: &self.arch, }; self.pass_validation.visit_module(&mut ctx)?; } // Perform typechecking on all modules let mut queue = ResolveQueue::new(); - for module in &mut self.modules { + for module_idx in 0..self.modules.len() { let mut ctx = visitor::Ctx{ heap: &mut self.heap, - module, + modules: &mut self.modules, + module_idx, symbols: &mut self.symbol_table, types: &mut self.type_table, + arch: &self.arch, }; PassTyping::queue_module_definitions(&mut ctx, &mut queue); }; @@ -233,9 +237,11 @@ impl Parser { let top = queue.pop().unwrap(); let mut ctx = visitor::Ctx{ heap: &mut self.heap, - module: &mut self.modules[top.root_id.index as usize], + modules: &mut self.modules, + module_idx: top.root_id.index as usize, symbols: &mut self.symbol_table, types: &mut self.type_table, + arch: &self.arch, }; self.pass_typing.handle_module_definition(&mut ctx, &mut queue, top)?; }