From 2c281066a89a0061eafe96353fef08cbc6e74eef Mon Sep 17 00:00:00 2001 From: Barf-Vader <47476490+Barf-Vader@users.noreply.github.com> Date: Mon, 17 Feb 2025 18:07:36 +0000 Subject: [PATCH] refactor: used varargs instead of noOperand --- src/main/wacc/backend/assemblyIR.scala | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/main/wacc/backend/assemblyIR.scala b/src/main/wacc/backend/assemblyIR.scala index d617202..f1ce3a0 100644 --- a/src/main/wacc/backend/assemblyIR.scala +++ b/src/main/wacc/backend/assemblyIR.scala @@ -3,11 +3,6 @@ package wacc object assemblyIR { sealed trait Operand - - // did not use option because we'd have to wrap each op around Some(). can refactor - case object NoOperand extends Operand { - override def toString = "" - } sealed trait Src extends Operand // mem location, register and imm value sealed trait Dest extends Operand // mem location and register enum RegSize { @@ -63,12 +58,8 @@ object assemblyIR { } // TODO Check if dest and src are not both memory locations - abstract class Operation(ins: String, op1: Operand = NoOperand, op2: Operand = NoOperand) { - override def toString: String = if (op2 == NoOperand) { - s"$ins ${op1.toString}" - } else { - s"$ins ${op1.toString}, ${op2.toString}" - } + abstract class Operation(ins: String, ops: Operand*) { + override def toString: String = s"$ins ${ops.mkString(", ")}" } case class Add(op1: Dest, op2: Src) extends Operation("add", op1, op2) case class Subtract(op1: Dest, op2: Src) extends Operation("sub", op1, op2)