lemonlang 0.0.3

an experimental, modern, purely safe, programming language.
use crate::{
	ast,
	ir::{ir, Register},
};

use super::Builder;

impl Builder<'_> {
	pub fn build_member_expr(&mut self, member_expr: &ast::MemberExpr) -> Register {
		let self_value = self.build_expr(&member_expr.left);
		let filed = member_expr.method.lexeme();
		let field = self.ir_ctx.get_struct_field_by_register(self_value, filed);
		let dest = self.ir_ctx.new_register();
		let field_type = self.get_type_id(member_expr.method.get_type_id());
		let instr = ir::GetFieldInstr { self_value, field, field_type, dest };
		self.ir_ctx.add_instr(instr.into());
		dest
	}
}