use super::MirBuilder; use crate::mir::{BasicBlockId, EffectMask, FunctionSignature, MirInstruction, MirType, ValueId}; impl MirBuilder { pub fn enter_function_for_test(&mut self, name: String) { let entry_block = self.core_ctx.next_block(); let signature = FunctionSignature { name, params: vec![], return_type: MirType::Void, effects: EffectMask::PURE, }; let function = self.new_function_with_metadata(signature, entry_block); self.scope_ctx.current_function = Some(function); self.current_block = Some(entry_block); } pub fn exit_function_for_test(&mut self) { self.scope_ctx.current_function = None; self.current_block = None; } pub fn push_block_for_test(&mut self) -> Result { let block_id = self.core_ctx.next_block(); self.start_new_block(block_id)?; Ok(block_id) } pub fn current_block_for_test(&self) -> Result { self.current_block .ok_or_else(|| "No current block".to_string()) } pub fn alloc_value_for_test(&mut self) -> ValueId { self.next_value_id() } pub fn emit_for_test(&mut self, inst: MirInstruction) -> Result<(), String> { self.emit_instruction(inst) } }