From b9fee347a6c059e494cef42689a3b61802024c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=88=B1=E7=89=B9=E6=AF=8F=E7=BE=8A=E9=98=9F?= Date: Sat, 6 Jun 2026 21:57:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A1=A5=E5=85=85=E5=A4=8D=E5=90=88?= =?UTF-8?q?=E8=BF=90=E7=AE=97=E7=BC=96=E8=AF=91=E8=B7=AF=E5=BE=84=E4=B8=8E?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E5=A4=8D=E5=90=88=E7=AC=A6=E5=8F=B7=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_compiler/src/emitter.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/crates/oxide_compiler/src/emitter.rs b/crates/oxide_compiler/src/emitter.rs index 49515c2..185d655 100644 --- a/crates/oxide_compiler/src/emitter.rs +++ b/crates/oxide_compiler/src/emitter.rs @@ -646,6 +646,13 @@ impl Compiler { &assign.left { if assign.operator != AssignmentOperator::Assign { + if assign.operator == AssignmentOperator::Addition + || assign.operator == AssignmentOperator::Subtraction + || assign.operator == AssignmentOperator::Multiplication + || assign.operator == AssignmentOperator::Division + || assign.operator == AssignmentOperator::Remainder + || assign.operator == AssignmentOperator::Exponential + { let rhs = self.emit_expression(&assign.right, ctx)?; let name = id_ref.name.as_str(); let var_reg = ctx.lookup_or_global(name); @@ -660,6 +667,12 @@ impl Compiler { }; ctx.emit(opcode::encode(op, var_reg, rhs, 0)); Ok(var_reg) + } else { + return Err(format!( + "compound assignment operator {:?} not supported", + assign.operator + )); + } } else { let val_reg = self.emit_expression(&assign.right, ctx)?; let name = id_ref.name.as_str();