Compare commits

..

No commits in common. "3cfde406d3821943a8819403eec3bf0aa851d4c5" and "be15364e3be07105310851f7800c3108b18831f5" have entirely different histories.

View File

@ -62,14 +62,12 @@ fn binary(
(Minus, 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), 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)),
(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()),
(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")),
/* 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")
}