Compare commits

...

2 Commits

Author SHA1 Message Date
3cfde406d3 chore: fix comment pos
i've moved comma but forgot to move the comment
2025-01-06 20:17:01 +04:00
2d1701e7f7 feat: finish challenge #2(ch.7) 2025-01-06 20:16:21 +04:00

View File

@ -62,12 +62,14 @@ fn binary(
(Minus, Number(left), Number(right)) => Ok(Number(left - right)), (Minus, Number(left), Number(right)) => Ok(Number(left - right)),
(Plus, Number(left), Number(right)) => Ok(Number(left + right)), (Plus, Number(left), Number(right)) => Ok(Number(left + right)),
(Plus, String(left), String(right)) => Ok(String(format!("{left}{right}"))), (Plus, String(left), String(right)) => Ok(String(format!("{left}{right}"))),
(Plus, String(left), Number(right)) => Ok(String(format!("{left}{right}"))),
(Plus, Number(left), String(right)) => Ok(String(format!("{left}{right}"))),
(Slash, Number(left), Number(right)) => Ok(Number(left / right)), (Slash, Number(left), Number(right)) => Ok(Number(left / right)),
(Star, Number(left), Number(right)) => Ok(Number(left * right)), (Star, Number(left), Number(right)) => Ok(Number(left * right)),
/* comma operator discard the left operand, so we just return the evaluation of the right operand */
(Comma, _,_) => Ok(right.clone()), (Comma, _,_) => Ok(right.clone()),
(Greater | GreaterEqual | Less | LessEqual | Minus | Slash | Star, _, _) => Err(RuntimeError::new(op, "Operands must be numbers")), (Greater | GreaterEqual | Less | LessEqual | Minus | Slash | Star, _, _) => Err(RuntimeError::new(op, "Operands must be numbers")),
(Plus, _, _) => Err(RuntimeError::new(op, "Operands must be two numbers or two strings")), (Plus, _, _) => Err(RuntimeError::new(op, "Operands must be two numbers or two strings")),
/* comma operator discard the left operand, so we just return the evaluation of the right operand */
_ => unreachable!("Shouldn't happen. Expr::Binary for interpret. Some case is a binary operation that wasn't matched") _ => unreachable!("Shouldn't happen. Expr::Binary for interpret. Some case is a binary operation that wasn't matched")
} }