lemonlang 0.0.4

an experimental, modern, purely safe, programming language.
use crate::{ir, report::throw_llvm_error};
use inkwell::values::FunctionValue;

use super::Llvm;

impl<'ll> Llvm<'ll> {
	pub fn llvm_compile_block(&mut self, block: &ir::IrBlock) {
		let llvm_block = match self.env.get_block(block.llvm_name().as_str()) {
			Some(block) => block,
			None => throw_llvm_error(format!("block {} not found", block.llvm_name())),
		};
		self.builder.position_at_end(*llvm_block);

		block.instrs.iter().for_each(|instr| {
			self.llvm_compile_instr(instr);
		});
	}
	pub fn llvm_register_block(&mut self, block_name: &str, function: &FunctionValue<'ll>) {
		let llvm_block = self.ctx.append_basic_block(*function, block_name);
		self.env.set_block(block_name, llvm_block);
	}
}