From b746948f785b49f219ffccb0506aefc2a6534efa Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 5 Sep 2026 00:25:40 +0000 Subject: [PATCH] refactor: consistent and informative error messages The evaluator bailed with bare CamelCase identifiers (TypeMismatch, UnknownOperator, UncallableObject, UnassignableObject) whilst the parser used prose sentences. The identifiers carried no context, neither the operand types nor the operator involved. Every error message is now a prose sentence naming the operator and the operand types, matching the parser's existing style. Two parser messages which had the same defect are also converted, CallExpressionParametersEndedAbruptly and FunctionParametersEndedAbruptly. Object::type_name and a Display implementation for InfixOperator provide the type and operator names within the messages. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_014EFyLCDrWHNfzGurYzwdSQ --- src/evaluator/expression/call/mod.rs | 5 ++- src/evaluator/expression/infix/mod.rs | 45 +++++++++++++++---- src/evaluator/expression/prefix/mod.rs | 10 ++++- src/evaluator/model/object/mod.rs | 13 ++++++ src/evaluator/statement/let_statement/mod.rs | 5 ++- .../expression/utilities/mod.rs | 4 +- .../model/syntax_tree_node/mod.rs | 17 +++++++ ...ix_expression_case_1_evaluation_error.snap | 2 +- ...ix_expression_case_2_evaluation_error.snap | 2 +- ...ix_expression_case_3_evaluation_error.snap | 2 +- ...ix_expression_case_1_evaluation_error.snap | 2 +- ...ix_expression_case_2_evaluation_error.snap | 2 +- ...ix_expression_case_3_evaluation_error.snap | 2 +- ...ix_expression_case_4_evaluation_error.snap | 2 +- ...x_expression_case_10_evaluation_error.snap | 2 +- ...x_expression_case_11_evaluation_error.snap | 2 +- ...x_expression_case_12_evaluation_error.snap | 2 +- ...x_expression_case_13_evaluation_error.snap | 2 +- ...x_expression_case_14_evaluation_error.snap | 2 +- ...ix_expression_case_1_evaluation_error.snap | 2 +- ...ix_expression_case_2_evaluation_error.snap | 2 +- ...ix_expression_case_3_evaluation_error.snap | 2 +- ...ix_expression_case_4_evaluation_error.snap | 2 +- ...ix_expression_case_5_evaluation_error.snap | 2 +- ...ix_expression_case_6_evaluation_error.snap | 2 +- ...ix_expression_case_7_evaluation_error.snap | 2 +- ...ix_expression_case_8_evaluation_error.snap | 2 +- ...ix_expression_case_9_evaluation_error.snap | 2 +- ...ix_expression_case_1_evaluation_error.snap | 2 +- ...ix_expression_case_1_evaluation_error.snap | 2 +- ...ix_expression_case_2_evaluation_error.snap | 2 +- ...ix_expression_case_3_evaluation_error.snap | 2 +- ...ix_expression_case_4_evaluation_error.snap | 2 +- 33 files changed, 112 insertions(+), 39 deletions(-) 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.", )