diff --git a/src/evaluator/expression/call/mod.rs b/src/evaluator/expression/call/mod.rs index ad0a725a..8127fd8d 100644 --- a/src/evaluator/expression/call/mod.rs +++ b/src/evaluator/expression/call/mod.rs @@ -23,7 +23,10 @@ impl Evaluator { self.environment.pop(); Ok(block_call_evaluation) } - _ => anyhow::bail!("UncallableObject"), + object => anyhow::bail!( + "Cannot call an object of type {}, only functions are callable.", + object.type_name() + ), } } } diff --git a/src/evaluator/expression/infix/mod.rs b/src/evaluator/expression/infix/mod.rs index fae86e02..ab797d1e 100644 --- a/src/evaluator/expression/infix/mod.rs +++ b/src/evaluator/expression/infix/mod.rs @@ -13,7 +13,10 @@ impl Evaluator { match operator { InfixOperator::Equals => Ok(Object::True), InfixOperator::NotEquals => Ok(Object::False), - _ => anyhow::bail!("UnknownOperator"), + _ => anyhow::bail!( + "Unknown operator, the {} infix operator is not supported for operands of type BOOLEAN.", + operator + ), } } @@ -21,7 +24,10 @@ impl Evaluator { match operator { InfixOperator::Equals => Ok(Object::False), InfixOperator::NotEquals => Ok(Object::True), - _ => anyhow::bail!("UnknownOperator"), + _ => anyhow::bail!( + "Unknown operator, the {} infix operator is not supported for operands of type BOOLEAN.", + operator + ), } } @@ -57,17 +63,29 @@ impl Evaluator { false => Ok(Object::False), }, }, - _ => anyhow::bail!("TypeMismatch"), + right_hand_object => anyhow::bail!( + "Type mismatch, cannot apply the {} infix operator to operands of type INTEGER and {}.", + operator, + right_hand_object.type_name() + ), }, Object::True => match self.evaluate_expression(right_hand)? { Object::True => evaluate_same_boolean(operator), Object::False => evaluate_opposite_boolean(operator), - _ => anyhow::bail!("TypeMismatch"), + right_hand_object => anyhow::bail!( + "Type mismatch, cannot apply the {} infix operator to operands of type BOOLEAN and {}.", + operator, + right_hand_object.type_name() + ), }, Object::False => match self.evaluate_expression(right_hand)? { Object::False => evaluate_same_boolean(operator), Object::True => evaluate_opposite_boolean(operator), - _ => anyhow::bail!("TypeMismatch"), + right_hand_object => anyhow::bail!( + "Type mismatch, cannot apply the {} infix operator to operands of type BOOLEAN and {}.", + operator, + right_hand_object.type_name() + ), }, Object::String { value: left_value } => match self.evaluate_expression(right_hand)? { Object::String { value: right_value } => match operator { @@ -86,11 +104,22 @@ impl Evaluator { value: concatenated, }) } - _ => anyhow::bail!("UnknownOperator"), + _ => anyhow::bail!( + "Unknown operator, the {} infix operator is not supported for operands of type STRING.", + operator + ), }, - _ => anyhow::bail!("TypeMismatch"), + right_hand_object => anyhow::bail!( + "Type mismatch, cannot apply the {} infix operator to operands of type STRING and {}.", + operator, + right_hand_object.type_name() + ), }, - _ => anyhow::bail!("UnknownOperator"), + left_hand_object => anyhow::bail!( + "Unknown operator, the {} infix operator is not supported for operands of type {}.", + operator, + left_hand_object.type_name() + ), } } } diff --git a/src/evaluator/expression/prefix/mod.rs b/src/evaluator/expression/prefix/mod.rs index 92e21595..e8b08019 100644 --- a/src/evaluator/expression/prefix/mod.rs +++ b/src/evaluator/expression/prefix/mod.rs @@ -12,7 +12,10 @@ impl Evaluator { match object { Object::True => Ok(Object::False), Object::False => Ok(Object::True), - _ => anyhow::bail!("TypeMismatch"), + object => anyhow::bail!( + "Type mismatch, cannot apply the ! prefix operator to an operand of type {}.", + object.type_name() + ), } } @@ -24,7 +27,10 @@ impl Evaluator { match object { Object::Integer { value } => Ok(Object::Integer { value: -value }), - _ => anyhow::bail!("TypeMismatch"), + object => anyhow::bail!( + "Type mismatch, cannot apply the - prefix operator to an operand of type {}.", + object.type_name() + ), } } } diff --git a/src/evaluator/model/object/mod.rs b/src/evaluator/model/object/mod.rs index 04e29513..1cf9923e 100644 --- a/src/evaluator/model/object/mod.rs +++ b/src/evaluator/model/object/mod.rs @@ -37,3 +37,16 @@ impl fmt::Display for Object { } } } + +impl Object { + pub(crate) fn type_name(&self) -> &'static str { + match self { + Object::Return { .. } => "RETURN", + Object::Integer { .. } => "INTEGER", + Object::String { .. } => "STRING", + Object::True | Object::False => "BOOLEAN", + Object::Null => "NULL", + Object::Function { .. } => "FUNCTION", + } + } +} diff --git a/src/evaluator/statement/let_statement/mod.rs b/src/evaluator/statement/let_statement/mod.rs index 490c5e6a..d9ed6028 100644 --- a/src/evaluator/statement/let_statement/mod.rs +++ b/src/evaluator/statement/let_statement/mod.rs @@ -11,7 +11,10 @@ impl Evaluator { let expression = self.evaluate_expression(expression)?; if let Object::Return { value: _ } = expression { - anyhow::bail!("UnassignableObject"); + anyhow::bail!( + "Cannot assign an object of type RETURN to the identifier {}.", + identifier + ); } self.environment.set(identifier, expression); diff --git a/src/syntax_analysis/expression/utilities/mod.rs b/src/syntax_analysis/expression/utilities/mod.rs index 778d74a4..3dac51af 100644 --- a/src/syntax_analysis/expression/utilities/mod.rs +++ b/src/syntax_analysis/expression/utilities/mod.rs @@ -65,7 +65,9 @@ impl SyntaxAnalysis<'_> { } }, None => { - anyhow::bail!("A {context} ended abruptly."); + anyhow::bail!( + "A {context} ended abruptly, expecting either a Comma or ClosingRoundBracket token." + ); } } } diff --git a/src/syntax_analysis/model/syntax_tree_node/mod.rs b/src/syntax_analysis/model/syntax_tree_node/mod.rs index 493f9a7b..8eef68cd 100644 --- a/src/syntax_analysis/model/syntax_tree_node/mod.rs +++ b/src/syntax_analysis/model/syntax_tree_node/mod.rs @@ -71,3 +71,20 @@ pub(crate) enum Expression { arguments: Vec, }, } + +impl std::fmt::Display for InfixOperator { + fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let operator = match self { + InfixOperator::Plus => "+", + InfixOperator::Minus => "-", + InfixOperator::Multiply => "*", + InfixOperator::Divide => "/", + InfixOperator::Equals => "==", + InfixOperator::NotEquals => "!=", + InfixOperator::LesserThan => "<", + InfixOperator::GreaterThan => ">", + }; + + formatter.write_str(operator) + } +} diff --git a/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_1_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_1_evaluation_error.snap index 53354cdd..a814c721 100644 --- a/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_1_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_1_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 31 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the == infix operator to operands of type BOOLEAN and INTEGER.", ) diff --git a/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_2_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_2_evaluation_error.snap index 53354cdd..17732036 100644 --- a/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_2_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_2_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 31 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the == infix operator to operands of type STRING and BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_3_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_3_evaluation_error.snap index 53354cdd..06ff64ff 100644 --- a/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_3_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_boolean_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_infix_expression__test_type_mismatch_boolean_infix_expression_case_3_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 31 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the != infix operator to operands of type INTEGER and STRING.", ) diff --git a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_1_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_1_evaluation_error.snap index ecfada1a..81ccb239 100644 --- a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_1_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_1_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 26 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - prefix operator to an operand of type BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_2_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_2_evaluation_error.snap index ecfada1a..81ccb239 100644 --- a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_2_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_2_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 26 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - prefix operator to an operand of type BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_3_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_3_evaluation_error.snap index ecfada1a..81ccb239 100644 --- a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_3_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_3_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 26 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - prefix operator to an operand of type BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_4_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_4_evaluation_error.snap index ecfada1a..81ccb239 100644 --- a/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_4_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_boolean_prefix_expression__test_type_mismatch_boolean_prefix_expression_case_4_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 26 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - prefix operator to an operand of type BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_10_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_10_evaluation_error.snap index 18eb7ed5..df078d9d 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_10_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_10_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - infix operator to operands of type STRING and INTEGER.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_11_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_11_evaluation_error.snap index 18eb7ed5..3a908875 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_11_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_11_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the + infix operator to operands of type STRING and INTEGER.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_12_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_12_evaluation_error.snap index 18eb7ed5..df078d9d 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_12_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_12_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - infix operator to operands of type STRING and INTEGER.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_13_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_13_evaluation_error.snap index 18eb7ed5..a8d30660 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_13_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_13_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the * infix operator to operands of type STRING and INTEGER.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_14_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_14_evaluation_error.snap index 18eb7ed5..b4ade8bf 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_14_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_14_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the * infix operator to operands of type INTEGER and STRING.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_1_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_1_evaluation_error.snap index 18eb7ed5..3e5dfe57 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_1_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_1_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the + infix operator to operands of type INTEGER and BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_2_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_2_evaluation_error.snap index 18eb7ed5..4de72126 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_2_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_2_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - infix operator to operands of type INTEGER and BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_3_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_3_evaluation_error.snap index 18eb7ed5..742d305b 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_3_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_3_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the * infix operator to operands of type BOOLEAN and INTEGER.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_4_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_4_evaluation_error.snap index 18eb7ed5..312c8f81 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_4_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_4_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the / infix operator to operands of type INTEGER and BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_5_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_5_evaluation_error.snap index 18eb7ed5..07fe7c0f 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_5_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_5_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the + infix operator to operands of type STRING and BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_6_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_6_evaluation_error.snap index 18eb7ed5..f40d9183 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_6_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_6_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the - infix operator to operands of type BOOLEAN and STRING.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_7_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_7_evaluation_error.snap index 18eb7ed5..26509843 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_7_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_7_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the * infix operator to operands of type BOOLEAN and STRING.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_8_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_8_evaluation_error.snap index 18eb7ed5..67592472 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_8_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_8_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the / infix operator to operands of type STRING and BOOLEAN.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_9_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_9_evaluation_error.snap index 18eb7ed5..461a48fc 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_9_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_infix_expression__test_type_mismatch_integer_infix_expression_case_9_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 48 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the + infix operator to operands of type INTEGER and STRING.", ) diff --git a/src/tests/evaluation_error/type_mismatch_integer_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_prefix_expression__test_type_mismatch_integer_prefix_expression_case_1_evaluation_error.snap b/src/tests/evaluation_error/type_mismatch_integer_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_prefix_expression__test_type_mismatch_integer_prefix_expression_case_1_evaluation_error.snap index 6164649e..3fa09a36 100644 --- a/src/tests/evaluation_error/type_mismatch_integer_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_prefix_expression__test_type_mismatch_integer_prefix_expression_case_1_evaluation_error.snap +++ b/src/tests/evaluation_error/type_mismatch_integer_prefix_expression/snapshots/monkey_interpreter__tests__evaluation_error__type_mismatch_integer_prefix_expression__test_type_mismatch_integer_prefix_expression_case_1_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 23 expression: error --- Err( - "TypeMismatch", + "Type mismatch, cannot apply the ! prefix operator to an operand of type INTEGER.", ) diff --git a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_1_evaluation_error.snap b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_1_evaluation_error.snap index f05acc5d..f0c51a8b 100644 --- a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_1_evaluation_error.snap +++ b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_1_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 32 expression: error --- Err( - "UnknownOperator", + "Unknown operator, the + infix operator is not supported for operands of type BOOLEAN.", ) diff --git a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_2_evaluation_error.snap b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_2_evaluation_error.snap index f05acc5d..cce10dca 100644 --- a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_2_evaluation_error.snap +++ b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_2_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 32 expression: error --- Err( - "UnknownOperator", + "Unknown operator, the - infix operator is not supported for operands of type BOOLEAN.", ) diff --git a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_3_evaluation_error.snap b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_3_evaluation_error.snap index f05acc5d..a734f595 100644 --- a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_3_evaluation_error.snap +++ b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_3_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 32 expression: error --- Err( - "UnknownOperator", + "Unknown operator, the * infix operator is not supported for operands of type BOOLEAN.", ) diff --git a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_4_evaluation_error.snap b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_4_evaluation_error.snap index f05acc5d..de9dc0d7 100644 --- a/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_4_evaluation_error.snap +++ b/src/tests/evaluation_error/unknown_operator_integer_infix_expression/snapshots/monkey_interpreter__tests__evaluation_error__unknown_operator_integer_infix_expression__test_unknown_operator_integer_infix_expression_case_4_evaluation_error.snap @@ -4,5 +4,5 @@ assertion_line: 32 expression: error --- Err( - "UnknownOperator", + "Unknown operator, the / infix operator is not supported for operands of type BOOLEAN.", )