From 554270cc4025beadd99b0214bc5ce875dc57fe9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vili=20Sinerv=C3=A4?= Date: Thu, 6 Feb 2025 15:18:12 +0200 Subject: [PATCH] Add '=' operator to IR Generator --- src/compiler/ir_generator.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/compiler/ir_generator.rs b/src/compiler/ir_generator.rs index ac35144..8aa9f46 100644 --- a/src/compiler/ir_generator.rs +++ b/src/compiler/ir_generator.rs @@ -125,7 +125,17 @@ fn visit_ast_node<'source>( result_var } BinaryOp(left, op, right) => match *op { - "=" => todo!(), + "=" => { + let right_var = visit_ast_node(right, types, symbols, instructions, labels); + let Identifier(var_name) = left.expr else { + panic!("Tried to assign to non-variable!"); + }; + let var = symbols.get(var_name).clone(); + + instructions.push(IrInstruction::new(right.loc, Copy(right_var, var.clone()))); + + var + } "and" => { let l_right = add_label("and_right", right.loc, labels); let l_skip = add_label("and_skip", ast.loc, labels);