From 8e23fb3ad8e39fac12494704a69d5e99f93c1028 Mon Sep 17 00:00:00 2001 From: DeveloperC Date: Fri, 20 Feb 2026 01:33:32 +0000 Subject: [PATCH] refactor: moving to anyhow context Closed issue https://github.com/DeveloperC286/monkey_interpreter/issues/50 --- Cargo.lock | 21 ----- Cargo.toml | 3 - src/evaluator/expression/boolean/mod.rs | 3 +- src/evaluator/expression/call/mod.rs | 5 +- src/evaluator/expression/function/mod.rs | 3 +- src/evaluator/expression/if_expression/mod.rs | 3 +- src/evaluator/expression/infix/mod.rs | 25 +++--- src/evaluator/expression/integer/mod.rs | 3 +- src/evaluator/expression/mod.rs | 6 +- src/evaluator/expression/prefix/mod.rs | 9 +-- src/evaluator/expression/string/mod.rs | 3 +- src/evaluator/mod.rs | 10 +-- src/evaluator/model/evaluation_error/mod.rs | 13 ---- src/evaluator/model/mod.rs | 1 - src/evaluator/statement/let_statement/mod.rs | 5 +- src/evaluator/statement/mod.rs | 6 +- .../statement/return_statement/mod.rs | 3 +- src/lexical_analysis/mod.rs | 23 +++--- .../model/lexical_error/mod.rs | 11 --- src/lexical_analysis/model/mod.rs | 1 - .../expression/function_expression/mod.rs | 23 +++--- .../expression/grouped_expression/mod.rs | 7 +- .../expression/if_expression/mod.rs | 9 +-- src/syntax_analysis/expression/mod.rs | 13 ++-- .../pratt_parsing/call_expression/mod.rs | 17 ++-- .../pratt_parsing/infix_expression/mod.rs | 8 +- .../expression/pratt_parsing/mod.rs | 3 +- .../expression/utilities/mod.rs | 7 +- src/syntax_analysis/macros.rs | 6 +- src/syntax_analysis/mod.rs | 9 +-- src/syntax_analysis/model/mod.rs | 1 - src/syntax_analysis/model/syntax_error/mod.rs | 78 ------------------- src/syntax_analysis/statement/mod.rs | 27 +++++-- ...ix_expression_case_1_evaluation_error.snap | 3 +- ...ix_expression_case_2_evaluation_error.snap | 3 +- ...ix_expression_case_3_evaluation_error.snap | 3 +- ...ix_expression_case_1_evaluation_error.snap | 3 +- ...ix_expression_case_2_evaluation_error.snap | 3 +- ...ix_expression_case_3_evaluation_error.snap | 3 +- ...ix_expression_case_4_evaluation_error.snap | 3 +- ...x_expression_case_10_evaluation_error.snap | 3 +- ...x_expression_case_11_evaluation_error.snap | 3 +- ...x_expression_case_12_evaluation_error.snap | 3 +- ...x_expression_case_13_evaluation_error.snap | 3 +- ...x_expression_case_14_evaluation_error.snap | 3 +- ...ix_expression_case_1_evaluation_error.snap | 3 +- ...ix_expression_case_2_evaluation_error.snap | 3 +- ...ix_expression_case_3_evaluation_error.snap | 3 +- ...ix_expression_case_4_evaluation_error.snap | 3 +- ...ix_expression_case_5_evaluation_error.snap | 3 +- ...ix_expression_case_6_evaluation_error.snap | 3 +- ...ix_expression_case_7_evaluation_error.snap | 3 +- ...ix_expression_case_8_evaluation_error.snap | 3 +- ...ix_expression_case_9_evaluation_error.snap | 3 +- ...ix_expression_case_1_evaluation_error.snap | 3 +- ...ix_expression_case_1_evaluation_error.snap | 3 +- ...ix_expression_case_2_evaluation_error.snap | 3 +- ...ix_expression_case_3_evaluation_error.snap | 3 +- ...ix_expression_case_4_evaluation_error.snap | 3 +- ...racters_case_1_lexical_analysis_error.snap | 5 +- ...racters_case_2_lexical_analysis_error.snap | 5 +- ...racters_case_3_lexical_analysis_error.snap | 5 +- ...ression_case_1_lexical_analysis_error.snap | 5 +- ...ression_case_1_lexical_analysis_error.snap | 5 +- ...ression_case_2_lexical_analysis_error.snap | 5 +- ...ression_case_3_lexical_analysis_error.snap | 5 +- ...ression_case_1_lexical_analysis_error.snap | 3 +- ...ression_case_2_lexical_analysis_error.snap | 5 +- ...ression_case_3_lexical_analysis_error.snap | 3 +- ...pression_case_1_syntax_analysis_error.snap | 3 +- ...pression_case_2_syntax_analysis_error.snap | 3 +- ...pression_case_3_syntax_analysis_error.snap | 3 +- ...pression_case_1_syntax_analysis_error.snap | 3 +- ...pression_case_2_syntax_analysis_error.snap | 3 +- ...pression_case_3_syntax_analysis_error.snap | 3 +- ...tatement_case_1_syntax_analysis_error.snap | 5 +- ...tatement_case_2_syntax_analysis_error.snap | 3 +- ...tatement_case_3_syntax_analysis_error.snap | 3 +- ...tatement_case_4_syntax_analysis_error.snap | 3 +- ...tatement_case_5_syntax_analysis_error.snap | 3 +- ...tatement_case_6_syntax_analysis_error.snap | 3 +- ...tatement_case_7_syntax_analysis_error.snap | 5 +- ...tatement_case_8_syntax_analysis_error.snap | 3 +- 83 files changed, 216 insertions(+), 319 deletions(-) delete mode 100644 src/evaluator/model/evaluation_error/mod.rs delete mode 100644 src/lexical_analysis/model/lexical_error/mod.rs delete mode 100644 src/syntax_analysis/model/syntax_error/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 127eaea8..45694a86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -383,7 +383,6 @@ dependencies = [ "pretty_env_logger", "rstest", "rstest_reuse", - "thiserror", ] [[package]] @@ -692,26 +691,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "toml_datetime" version = "0.7.5+spec-1.1.0" diff --git a/Cargo.toml b/Cargo.toml index b11961f9..84e22463 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,9 +19,6 @@ pretty_env_logger = "0.5.0" # For CLI argument parsing. clap = { version = "4.5.0", features = ["derive"] } -# For custom errors. -thiserror = "2.0.0" - # For error handling. anyhow = "1.0.89" diff --git a/src/evaluator/expression/boolean/mod.rs b/src/evaluator/expression/boolean/mod.rs index 38c6be94..a846a4d4 100644 --- a/src/evaluator/expression/boolean/mod.rs +++ b/src/evaluator/expression/boolean/mod.rs @@ -1,9 +1,8 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; impl Evaluator { - pub(super) fn evaluate_boolean(&self, literal: bool) -> Result { + pub(super) fn evaluate_boolean(&self, literal: bool) -> anyhow::Result { match literal { true => Ok(Object::True), false => Ok(Object::False), diff --git a/src/evaluator/expression/call/mod.rs b/src/evaluator/expression/call/mod.rs index c8386ed8..04507d9a 100644 --- a/src/evaluator/expression/call/mod.rs +++ b/src/evaluator/expression/call/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::Expression; @@ -8,7 +7,7 @@ impl Evaluator { &mut self, function: Expression, arguments: Vec, - ) -> Result { + ) -> anyhow::Result { match self.evaluate_expression(function)? { Object::Function { parameters, block } => { self.environment.push(); @@ -24,7 +23,7 @@ impl Evaluator { self.environment.pop(); Ok(block_call_evaluation) } - _ => Err(EvaluationError::UncallableObject), + _ => anyhow::bail!("UncallableObject"), } } } diff --git a/src/evaluator/expression/function/mod.rs b/src/evaluator/expression/function/mod.rs index 11ef5eca..2c691f06 100644 --- a/src/evaluator/expression/function/mod.rs +++ b/src/evaluator/expression/function/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::Block; @@ -8,7 +7,7 @@ impl Evaluator { &self, parameters: Vec, block: Block, - ) -> Result { + ) -> anyhow::Result { Ok(Object::Function { parameters, block }) } } diff --git a/src/evaluator/expression/if_expression/mod.rs b/src/evaluator/expression/if_expression/mod.rs index 64fccc69..ed07398e 100644 --- a/src/evaluator/expression/if_expression/mod.rs +++ b/src/evaluator/expression/if_expression/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::{Block, Expression}; @@ -9,7 +8,7 @@ impl Evaluator { condition: Expression, consequence: Block, alternative: Option, - ) -> Result { + ) -> anyhow::Result { match self.evaluate_expression(condition)? { Object::Null | Object::False => match alternative { Some(block) => self.evaluate_block(block), diff --git a/src/evaluator/expression/infix/mod.rs b/src/evaluator/expression/infix/mod.rs index 75d7fc93..48e3b292 100644 --- a/src/evaluator/expression/infix/mod.rs +++ b/src/evaluator/expression/infix/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::lexical_analysis::model::token::Token; @@ -10,20 +9,20 @@ impl Evaluator { left_hand: Expression, operator_token: Token, right_hand: Expression, - ) -> Result { - fn evaluate_same_boolean(operator_token: Token) -> Result { + ) -> anyhow::Result { + fn evaluate_same_boolean(operator_token: Token) -> anyhow::Result { match operator_token { Token::Equals => Ok(Object::True), Token::NotEquals => Ok(Object::False), - _ => Err(EvaluationError::UnknownOperator), + _ => anyhow::bail!("UnknownOperator"), } } - fn evaluate_opposite_boolean(operator_token: Token) -> Result { + fn evaluate_opposite_boolean(operator_token: Token) -> anyhow::Result { match operator_token { Token::Equals => Ok(Object::False), Token::NotEquals => Ok(Object::True), - _ => Err(EvaluationError::UnknownOperator), + _ => anyhow::bail!("UnknownOperator"), } } @@ -58,19 +57,19 @@ impl Evaluator { true => Ok(Object::True), false => Ok(Object::False), }, - _ => Err(EvaluationError::UnknownOperator), + _ => anyhow::bail!("UnknownOperator"), }, - _ => Err(EvaluationError::TypeMismatch), + _ => anyhow::bail!("TypeMismatch"), }, Object::True => match self.evaluate_expression(right_hand)? { Object::True => evaluate_same_boolean(operator_token), Object::False => evaluate_opposite_boolean(operator_token), - _ => Err(EvaluationError::TypeMismatch), + _ => anyhow::bail!("TypeMismatch"), }, Object::False => match self.evaluate_expression(right_hand)? { Object::False => evaluate_same_boolean(operator_token), Object::True => evaluate_opposite_boolean(operator_token), - _ => Err(EvaluationError::TypeMismatch), + _ => anyhow::bail!("TypeMismatch"), }, Object::String { value: left_value } => match self.evaluate_expression(right_hand)? { Object::String { value: right_value } => match operator_token { @@ -89,11 +88,11 @@ impl Evaluator { value: concatenated, }) } - _ => Err(EvaluationError::UnknownOperator), + _ => anyhow::bail!("UnknownOperator"), }, - _ => Err(EvaluationError::TypeMismatch), + _ => anyhow::bail!("TypeMismatch"), }, - _ => Err(EvaluationError::UnknownOperator), + _ => anyhow::bail!("UnknownOperator"), } } } diff --git a/src/evaluator/expression/integer/mod.rs b/src/evaluator/expression/integer/mod.rs index 801fe2e9..6a911bb6 100644 --- a/src/evaluator/expression/integer/mod.rs +++ b/src/evaluator/expression/integer/mod.rs @@ -1,9 +1,8 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; impl Evaluator { - pub(super) fn evaluate_integer(&self, literal: i64) -> Result { + pub(super) fn evaluate_integer(&self, literal: i64) -> anyhow::Result { Ok(Object::Integer { value: literal }) } } diff --git a/src/evaluator/expression/mod.rs b/src/evaluator/expression/mod.rs index 424f8141..a8ff3537 100644 --- a/src/evaluator/expression/mod.rs +++ b/src/evaluator/expression/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::*; @@ -13,10 +12,7 @@ mod prefix; mod string; impl Evaluator { - pub(crate) fn evaluate_expression( - &mut self, - expression: Expression, - ) -> Result { + pub(crate) fn evaluate_expression(&mut self, expression: Expression) -> anyhow::Result { match expression { Expression::Integer { literal } => self.evaluate_integer(literal), Expression::String { literal } => self.evaluate_string(literal), diff --git a/src/evaluator/expression/prefix/mod.rs b/src/evaluator/expression/prefix/mod.rs index e4916dc3..d02c6132 100644 --- a/src/evaluator/expression/prefix/mod.rs +++ b/src/evaluator/expression/prefix/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::Expression; @@ -7,25 +6,25 @@ impl Evaluator { pub(super) fn evaluate_not_prefix_expression( &mut self, right_hand_expression: Expression, - ) -> Result { + ) -> anyhow::Result { let object = self.evaluate_expression(right_hand_expression)?; match object { Object::True => Ok(Object::False), Object::False => Ok(Object::True), - _ => Err(EvaluationError::TypeMismatch), + _ => anyhow::bail!("TypeMismatch"), } } pub(super) fn evaluate_minus_prefix_expression( &mut self, right_hand_expression: Expression, - ) -> Result { + ) -> anyhow::Result { let object = self.evaluate_expression(right_hand_expression)?; match object { Object::Integer { value } => Ok(Object::Integer { value: -value }), - _ => Err(EvaluationError::TypeMismatch), + _ => anyhow::bail!("TypeMismatch"), } } } diff --git a/src/evaluator/expression/string/mod.rs b/src/evaluator/expression/string/mod.rs index f5d6086c..d10b33c6 100644 --- a/src/evaluator/expression/string/mod.rs +++ b/src/evaluator/expression/string/mod.rs @@ -1,9 +1,8 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; impl Evaluator { - pub(super) fn evaluate_string(&self, string: String) -> Result { + pub(super) fn evaluate_string(&self, string: String) -> anyhow::Result { Ok(Object::String { value: string }) } } diff --git a/src/evaluator/mod.rs b/src/evaluator/mod.rs index d7b2ccfb..39067b04 100644 --- a/src/evaluator/mod.rs +++ b/src/evaluator/mod.rs @@ -1,5 +1,4 @@ use crate::evaluator::model::environment::Environment; -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::syntax_analysis::model::syntax_tree_node::*; @@ -23,7 +22,7 @@ impl Evaluator { pub(crate) fn evaluate( &mut self, abstract_syntax_tree: Vec, - ) -> Result { + ) -> anyhow::Result { let mut object = Object::Null; for syntax_tree_node in abstract_syntax_tree { @@ -38,7 +37,7 @@ impl Evaluator { Ok(object) } - fn evaluate_block(&mut self, block: Block) -> Result { + fn evaluate_block(&mut self, block: Block) -> anyhow::Result { let mut object = Object::Null; for syntax_tree_node in block.nodes { @@ -52,10 +51,7 @@ impl Evaluator { Ok(object) } - fn evaluate_node( - &mut self, - syntax_tree_node: SyntaxTreeNode, - ) -> Result { + fn evaluate_node(&mut self, syntax_tree_node: SyntaxTreeNode) -> anyhow::Result { match syntax_tree_node { SyntaxTreeNode::Expression { expression } => self.evaluate_expression(expression), SyntaxTreeNode::Statement { statement } => self.evaluate_statement(statement), diff --git a/src/evaluator/model/evaluation_error/mod.rs b/src/evaluator/model/evaluation_error/mod.rs deleted file mode 100644 index 2432a98e..00000000 --- a/src/evaluator/model/evaluation_error/mod.rs +++ /dev/null @@ -1,13 +0,0 @@ -use thiserror::Error; - -#[derive(Error, Debug)] -pub(crate) enum EvaluationError { - #[error("TypeMismatch")] - TypeMismatch, - #[error("UnknownOperator")] - UnknownOperator, - #[error("UnassignableObject")] - UnassignableObject, - #[error("UncallableObject")] - UncallableObject, -} diff --git a/src/evaluator/model/mod.rs b/src/evaluator/model/mod.rs index 68dab971..f81179d5 100644 --- a/src/evaluator/model/mod.rs +++ b/src/evaluator/model/mod.rs @@ -1,3 +1,2 @@ pub(super) mod environment; -pub(super) mod evaluation_error; pub mod object; diff --git a/src/evaluator/statement/let_statement/mod.rs b/src/evaluator/statement/let_statement/mod.rs index affc460b..507acef3 100644 --- a/src/evaluator/statement/let_statement/mod.rs +++ b/src/evaluator/statement/let_statement/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::*; @@ -8,11 +7,11 @@ impl Evaluator { &mut self, identifier: String, expression: Expression, - ) -> Result { + ) -> anyhow::Result { let expression = self.evaluate_expression(expression)?; if let Object::Return { value: _ } = expression { - return Err(EvaluationError::UnassignableObject); + anyhow::bail!("UnassignableObject"); } self.environment.set(identifier, expression); diff --git a/src/evaluator/statement/mod.rs b/src/evaluator/statement/mod.rs index 3d739352..f64e4b1a 100644 --- a/src/evaluator/statement/mod.rs +++ b/src/evaluator/statement/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::*; @@ -7,10 +6,7 @@ mod let_statement; mod return_statement; impl Evaluator { - pub(super) fn evaluate_statement( - &mut self, - statement: Statement, - ) -> Result { + pub(super) fn evaluate_statement(&mut self, statement: Statement) -> anyhow::Result { match statement { Statement::Let { identifier, diff --git a/src/evaluator/statement/return_statement/mod.rs b/src/evaluator/statement/return_statement/mod.rs index da59e735..27143638 100644 --- a/src/evaluator/statement/return_statement/mod.rs +++ b/src/evaluator/statement/return_statement/mod.rs @@ -1,4 +1,3 @@ -use crate::evaluator::model::evaluation_error::EvaluationError; use crate::evaluator::model::object::Object; use crate::evaluator::Evaluator; use crate::syntax_analysis::model::syntax_tree_node::*; @@ -7,7 +6,7 @@ impl Evaluator { pub(super) fn evaluate_return_statement( &mut self, expression: Expression, - ) -> Result { + ) -> anyhow::Result { Ok(Object::Return { value: Box::new(self.evaluate_expression(expression)?), }) diff --git a/src/lexical_analysis/mod.rs b/src/lexical_analysis/mod.rs index b15d09d7..484c9a70 100644 --- a/src/lexical_analysis/mod.rs +++ b/src/lexical_analysis/mod.rs @@ -1,7 +1,6 @@ use std::iter::{FromIterator, Peekable}; use std::str::Chars; -use crate::lexical_analysis::model::lexical_error::LexicalError; use crate::lexical_analysis::model::token::Token; pub(crate) mod model; @@ -11,7 +10,7 @@ pub(crate) struct LexicalAnalysis<'a> { } impl LexicalAnalysis<'_> { - pub(crate) fn from(code: &str) -> Result, LexicalError> { + pub(crate) fn from(code: &str) -> anyhow::Result> { let mut lexical_analysis = LexicalAnalysis { source_code: code.chars().peekable(), }; @@ -19,8 +18,8 @@ impl LexicalAnalysis<'_> { lexical_analysis.parse_source_code() } - fn parse_source_code(&mut self) -> Result, LexicalError> { - fn parse_context(context: &str) -> Result { + fn parse_source_code(&mut self) -> anyhow::Result> { + fn parse_context(context: &str) -> anyhow::Result { match ( parse_integer(context), parse_keyword(context), @@ -30,7 +29,9 @@ impl LexicalAnalysis<'_> { // When it is a valid keyword and identifier, then it is a keyword. (None, Some(keyword), _) => Ok(keyword), (None, None, Some(identifier)) => Ok(identifier), - (_, _, _) => Err(LexicalError::UnparsableContext(context.to_string())), + (_, _, _) => { + anyhow::bail!("Unparsable context for lexical analysis {:?}.", context) + } } } @@ -85,7 +86,7 @@ impl LexicalAnalysis<'_> { Ok(tokens) } - fn parse_character(&mut self, character: &char) -> Result, LexicalError> { + fn parse_character(&mut self, character: &char) -> anyhow::Result> { trace!("Attempting to parse the character {character:?} to a token."); match character { '!' => match self.source_code.peek() { @@ -124,7 +125,7 @@ impl LexicalAnalysis<'_> { } } - fn parse_string_object(&mut self) -> Result { + fn parse_string_object(&mut self) -> anyhow::Result { trace!("Attempting to parse a string object."); let mut string_object = vec![]; @@ -138,11 +139,13 @@ impl LexicalAnalysis<'_> { Some('t') => string_object.push('\t'), Some('n') => string_object.push('\n'), Some('r') => string_object.push('\r'), - Some(character) => return Err(LexicalError::IllegalEscaping(character)), - None => return Err(LexicalError::StringNotClosed), + Some(character) => { + anyhow::bail!("Illegal escaping of the character {:?}.", character) + } + None => anyhow::bail!("String not closed before the end of the code."), }, Some(character) => string_object.push(character), - None => return Err(LexicalError::StringNotClosed), + None => anyhow::bail!("String not closed before the end of the code."), } } diff --git a/src/lexical_analysis/model/lexical_error/mod.rs b/src/lexical_analysis/model/lexical_error/mod.rs deleted file mode 100644 index 57944e1f..00000000 --- a/src/lexical_analysis/model/lexical_error/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -use thiserror::Error; - -#[derive(Error, Debug)] -pub(crate) enum LexicalError { - #[error("Unparsable context for lexical analysis {0:?}.")] - UnparsableContext(String), - #[error("String not closed before the end of the code.")] - StringNotClosed, - #[error("Illegal escaping of the character {0:?}.")] - IllegalEscaping(char), -} diff --git a/src/lexical_analysis/model/mod.rs b/src/lexical_analysis/model/mod.rs index edb7452e..57b1f248 100644 --- a/src/lexical_analysis/model/mod.rs +++ b/src/lexical_analysis/model/mod.rs @@ -1,2 +1 @@ -pub(crate) mod lexical_error; pub(crate) mod token; diff --git a/src/syntax_analysis/expression/function_expression/mod.rs b/src/syntax_analysis/expression/function_expression/mod.rs index 8262b724..c6729947 100644 --- a/src/syntax_analysis/expression/function_expression/mod.rs +++ b/src/syntax_analysis/expression/function_expression/mod.rs @@ -1,15 +1,18 @@ use crate::lexical_analysis::model::token::Token; use crate::syntax_analysis::model::expression_precedence::ExpressionPrecedence; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::Expression; use crate::syntax_analysis::SyntaxAnalysis; impl SyntaxAnalysis<'_> { - pub(crate) fn parse_function_expression(&mut self) -> Result { + pub(crate) fn parse_function_expression(&mut self) -> anyhow::Result { debug!("Parsing a function expression."); // parse function expression - assert_token!(self, Token::Function, Err(SyntaxError::MissingFunction)); + assert_token!( + self, + Token::Function, + "A function expression must start with Function token." + ); let parameters = self.parse_parameters()?; // check function expression was parsed correctly @@ -21,13 +24,13 @@ impl SyntaxAnalysis<'_> { }) } - fn parse_parameters(&mut self) -> Result, SyntaxError> { + fn parse_parameters(&mut self) -> anyhow::Result> { debug!("Parsing parameters."); assert_token!( self, Token::OpeningRoundBracket, - Err(SyntaxError::MissingFunctionOpeningRoundBracket) + "A function expression must have a OpeningRoundBracket token after the Function token." ); let mut parameters = vec![]; @@ -40,7 +43,9 @@ impl SyntaxAnalysis<'_> { parameters.push(identifier); } _ => { - return Err(SyntaxError::FunctionParameterNotIdentifier); + anyhow::bail!( + "Only allowed identifiers in function expression's parameters." + ); } } @@ -51,11 +56,11 @@ impl SyntaxAnalysis<'_> { self.tokens.next(); } _ => { - return Err(SyntaxError::FunctionParameterNotCommaSeperated); + anyhow::bail!("Parameters must be comma seperated identifiers."); } }, None => { - return Err(SyntaxError::FunctionParametersEndedAbruptly); + anyhow::bail!("FunctionParametersEndedAbruptly."); } } } @@ -65,7 +70,7 @@ impl SyntaxAnalysis<'_> { assert_token!( self, Token::ClosingRoundBracket, - Err(SyntaxError::MissingFunctionClosingRoundBracket) + "A function expression must have a ClosingRoundBracket token after the parameters." ); Ok(parameters) } diff --git a/src/syntax_analysis/expression/grouped_expression/mod.rs b/src/syntax_analysis/expression/grouped_expression/mod.rs index 40f9cd0d..8da0f0ab 100644 --- a/src/syntax_analysis/expression/grouped_expression/mod.rs +++ b/src/syntax_analysis/expression/grouped_expression/mod.rs @@ -1,23 +1,22 @@ use crate::lexical_analysis::model::token::Token; use crate::syntax_analysis::model::expression_precedence::ExpressionPrecedence; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::Expression; use crate::syntax_analysis::SyntaxAnalysis; impl SyntaxAnalysis<'_> { - pub(crate) fn parse_grouped_expression(&mut self) -> Result { + pub(crate) fn parse_grouped_expression(&mut self) -> anyhow::Result { debug!("Parsing a grouped expression."); assert_token!( self, Token::OpeningRoundBracket, - Err(SyntaxError::MissingGroupedOpeningRoundBracket) + "A grouped expression must start with a OpeningRoundBracket token." ); let grouped_expression = self.get_expression(ExpressionPrecedence::Lowest)?; assert_token!( self, Token::ClosingRoundBracket, - Err(SyntaxError::MissingGroupedClosingRoundBracket) + "A grouped expression must end with a ClosingRoundBracket token." ); Ok(grouped_expression) diff --git a/src/syntax_analysis/expression/if_expression/mod.rs b/src/syntax_analysis/expression/if_expression/mod.rs index 6722b6e4..9c4d899c 100644 --- a/src/syntax_analysis/expression/if_expression/mod.rs +++ b/src/syntax_analysis/expression/if_expression/mod.rs @@ -1,25 +1,24 @@ use crate::lexical_analysis::model::token::Token; use crate::syntax_analysis::model::expression_precedence::ExpressionPrecedence; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::Expression; use crate::syntax_analysis::SyntaxAnalysis; impl SyntaxAnalysis<'_> { - pub(crate) fn parse_if_expression(&mut self) -> Result { + pub(crate) fn parse_if_expression(&mut self) -> anyhow::Result { debug!("Parsing a if expression."); // parse if expression - assert_token!(self, Token::If, Err(SyntaxError::MissingIf)); + assert_token!(self, Token::If, "A if expression must start with If token."); assert_token!( self, Token::OpeningRoundBracket, - Err(SyntaxError::MissingIfOpeningRoundBracket) + "A if expression must have a OpeningRoundBracket token after the If token." ); let condition = self.get_expression(ExpressionPrecedence::Lowest)?; assert_token!( self, Token::ClosingRoundBracket, - Err(SyntaxError::MissingIfClosingRoundBracket) + "A if expression must have a ClosingRoundBracket token after the conditional." ); let consequence = self.parse_block()?; let mut alternative = None; diff --git a/src/syntax_analysis/expression/mod.rs b/src/syntax_analysis/expression/mod.rs index 5370e566..37c28aee 100644 --- a/src/syntax_analysis/expression/mod.rs +++ b/src/syntax_analysis/expression/mod.rs @@ -1,6 +1,5 @@ use crate::lexical_analysis::model::token::Token; use crate::syntax_analysis::model::expression_precedence::ExpressionPrecedence; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::{Expression, SyntaxTreeNode}; use crate::syntax_analysis::SyntaxAnalysis; @@ -11,7 +10,7 @@ mod pratt_parsing; mod utilities; impl SyntaxAnalysis<'_> { - pub(crate) fn get_expression_node(&mut self) -> Result { + pub(crate) fn get_expression_node(&mut self) -> anyhow::Result { let expression = self.get_expression(ExpressionPrecedence::Lowest)?; semicolon!(self); Ok(SyntaxTreeNode::Expression { expression }) @@ -20,7 +19,7 @@ impl SyntaxAnalysis<'_> { pub(crate) fn get_expression( &mut self, expression_precedence: ExpressionPrecedence, - ) -> Result { + ) -> anyhow::Result { debug!("Parsing an expression."); match self.tokens.peek() { @@ -66,7 +65,7 @@ impl SyntaxAnalysis<'_> { ), Err(_) => { // TODO what with other error? - Err(SyntaxError::MissingRightHandToPrefixExpression) + anyhow::bail!("A prefix expression must have a right hand expression.") } } } @@ -83,7 +82,7 @@ impl SyntaxAnalysis<'_> { ), Err(_) => { // TODO what with other error? - Err(SyntaxError::MissingRightHandToPrefixExpression) + anyhow::bail!("A prefix expression must have a right hand expression.") } } } @@ -115,9 +114,9 @@ impl SyntaxAnalysis<'_> { let function_expression = self.parse_function_expression()?; self.pratt_parsing(function_expression, expression_precedence) } - _ => Err(SyntaxError::UnparsableAsExpression((*token).clone())), + _ => anyhow::bail!("Do not know how to parse {:?} as an expression.", *token), }, - None => Err(SyntaxError::NoTokenToParse), + None => anyhow::bail!("No token to parse."), } } } diff --git a/src/syntax_analysis/expression/pratt_parsing/call_expression/mod.rs b/src/syntax_analysis/expression/pratt_parsing/call_expression/mod.rs index 3dea4e80..cc1e26c4 100644 --- a/src/syntax_analysis/expression/pratt_parsing/call_expression/mod.rs +++ b/src/syntax_analysis/expression/pratt_parsing/call_expression/mod.rs @@ -1,6 +1,5 @@ use crate::lexical_analysis::model::token::Token; use crate::syntax_analysis::model::expression_precedence::ExpressionPrecedence; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::Expression; use crate::syntax_analysis::SyntaxAnalysis; @@ -8,7 +7,7 @@ impl SyntaxAnalysis<'_> { pub(crate) fn parse_call_expression( &mut self, function: Expression, - ) -> Result { + ) -> anyhow::Result { debug!("Parsing a call expression."); // check call expression was correctly called by an identifier on inlined function. @@ -19,7 +18,9 @@ impl SyntaxAnalysis<'_> { block: _, } => {} _ => { - return Err(SyntaxError::CallExpressionNotIdentifierOrFunction); + anyhow::bail!( + "A call expression is not calling either an identifier or an inlined function." + ); } } @@ -32,13 +33,13 @@ impl SyntaxAnalysis<'_> { }) } - fn parse_arguments(&mut self) -> Result, SyntaxError> { + fn parse_arguments(&mut self) -> anyhow::Result> { debug!("Parsing arguments."); assert_token!( self, Token::OpeningRoundBracket, - Err(SyntaxError::MissingCallExpressionOpeningRoundBracket) + "A call expression must have a OpeningRoundBracket token after the Function token." ); let mut arguments = vec![]; @@ -55,11 +56,11 @@ impl SyntaxAnalysis<'_> { self.tokens.next(); } _ => { - return Err(SyntaxError::CallExpressionParameterNotCommaSeperated); + anyhow::bail!("Parameters must be comma seperated identifiers."); } }, None => { - return Err(SyntaxError::CallExpressionParametersEndedAbruptly); + anyhow::bail!("CallExpressionParametersEndedAbruptly."); } } } @@ -69,7 +70,7 @@ impl SyntaxAnalysis<'_> { assert_token!( self, Token::ClosingRoundBracket, - Err(SyntaxError::MissingCallExpressionClosingRoundBracket) + "A call expression must have a ClosingRoundBracket token after the parameters." ); Ok(arguments) } diff --git a/src/syntax_analysis/expression/pratt_parsing/infix_expression/mod.rs b/src/syntax_analysis/expression/pratt_parsing/infix_expression/mod.rs index 47654bdc..2a4dc76f 100644 --- a/src/syntax_analysis/expression/pratt_parsing/infix_expression/mod.rs +++ b/src/syntax_analysis/expression/pratt_parsing/infix_expression/mod.rs @@ -1,4 +1,3 @@ -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::Expression; use crate::syntax_analysis::SyntaxAnalysis; @@ -6,10 +5,13 @@ impl SyntaxAnalysis<'_> { pub(crate) fn parse_infix_expression( &mut self, left_hand: Expression, - ) -> Result { + ) -> anyhow::Result { debug!("Parsing a infix expression."); - let operator = self.tokens.next().ok_or(SyntaxError::NoTokenToParse)?; + let operator = self + .tokens + .next() + .ok_or_else(|| anyhow::anyhow!("No token to parse."))?; let precedence = crate::syntax_analysis::model::expression_precedence::get_current_expression_precedence( diff --git a/src/syntax_analysis/expression/pratt_parsing/mod.rs b/src/syntax_analysis/expression/pratt_parsing/mod.rs index 81006a96..8d12cb00 100644 --- a/src/syntax_analysis/expression/pratt_parsing/mod.rs +++ b/src/syntax_analysis/expression/pratt_parsing/mod.rs @@ -2,7 +2,6 @@ use std::cmp::Ordering; use crate::lexical_analysis::model::token::Token; use crate::syntax_analysis::model::expression_precedence::ExpressionPrecedence; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::Expression; use crate::syntax_analysis::SyntaxAnalysis; @@ -14,7 +13,7 @@ impl SyntaxAnalysis<'_> { &mut self, mut expression: Expression, expression_precedence: ExpressionPrecedence, - ) -> Result { + ) -> anyhow::Result { while let Some(token) = self.tokens.peek() { if **token == Token::SemiColon { break; diff --git a/src/syntax_analysis/expression/utilities/mod.rs b/src/syntax_analysis/expression/utilities/mod.rs index 41733a72..63123cce 100644 --- a/src/syntax_analysis/expression/utilities/mod.rs +++ b/src/syntax_analysis/expression/utilities/mod.rs @@ -1,15 +1,14 @@ use crate::lexical_analysis::model::token::Token; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::Block; use crate::syntax_analysis::SyntaxAnalysis; impl SyntaxAnalysis<'_> { - pub(crate) fn parse_block(&mut self) -> Result { + pub(crate) fn parse_block(&mut self) -> anyhow::Result { debug!("Parsing a block."); assert_token!( self, Token::OpeningCurlyBracket, - Err(SyntaxError::MissingBlockOpeningCurlyBracket) + "A block must start with a OpeningCurlyBracket token." ); let mut blocks = vec![]; @@ -25,7 +24,7 @@ impl SyntaxAnalysis<'_> { assert_token!( self, Token::ClosingCurlyBracket, - Err(SyntaxError::MissingBlockClosingCurlyBracket) + "A block must end with a ClosingCurlyBracket token." ); Ok(Block { nodes: blocks }) diff --git a/src/syntax_analysis/macros.rs b/src/syntax_analysis/macros.rs index a3d55ab1..9b9a26f3 100644 --- a/src/syntax_analysis/macros.rs +++ b/src/syntax_analysis/macros.rs @@ -13,15 +13,15 @@ macro_rules! semicolon { } macro_rules! assert_token { - ($self:expr, $expect_token:expr, $failure_returning:expr) => { + ($self:expr, $expect_token:expr, $failure_msg:expr) => { match $self.tokens.next() { Some(token) => { if *token != $expect_token { - return $failure_returning; + anyhow::bail!($failure_msg); } } None => { - return $failure_returning; + anyhow::bail!($failure_msg); } } }; diff --git a/src/syntax_analysis/mod.rs b/src/syntax_analysis/mod.rs index dc9b9fc0..2243aaa7 100644 --- a/src/syntax_analysis/mod.rs +++ b/src/syntax_analysis/mod.rs @@ -1,5 +1,4 @@ use crate::lexical_analysis::model::token::Token; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::SyntaxTreeNode; #[macro_use] @@ -18,7 +17,7 @@ pub(crate) struct SyntaxAnalysis<'a> { } impl SyntaxAnalysis<'_> { - pub(crate) fn from(tokens: Vec) -> Result, SyntaxError> { + pub(crate) fn from(tokens: Vec) -> anyhow::Result> { let mut syntax_analysis = SyntaxAnalysis { tokens: tokens.iter().peekable(), }; @@ -26,7 +25,7 @@ impl SyntaxAnalysis<'_> { syntax_analysis.get_abstract_syntax_tree() } - pub(crate) fn get_abstract_syntax_tree(&mut self) -> Result, SyntaxError> { + pub(crate) fn get_abstract_syntax_tree(&mut self) -> anyhow::Result> { let mut abstract_syntax_tree: Vec = vec![]; while self.tokens.peek().is_some() { @@ -37,11 +36,11 @@ impl SyntaxAnalysis<'_> { Ok(abstract_syntax_tree) } - fn get_next_syntax_tree_node(&mut self) -> Result { + fn get_next_syntax_tree_node(&mut self) -> anyhow::Result { debug!("Parsing next SyntaxTreeNode."); match self.tokens.peek() { - None => Err(SyntaxError::NoTokenToParse), + None => anyhow::bail!("No token to parse."), Some(Token::Let) => self.parse_let_statement(), Some(Token::Return) => self.parse_return_statement(), Some(_) => self.get_expression_node(), diff --git a/src/syntax_analysis/model/mod.rs b/src/syntax_analysis/model/mod.rs index 611eed5c..b400e244 100644 --- a/src/syntax_analysis/model/mod.rs +++ b/src/syntax_analysis/model/mod.rs @@ -1,3 +1,2 @@ pub(crate) mod expression_precedence; -pub(crate) mod syntax_error; pub(crate) mod syntax_tree_node; diff --git a/src/syntax_analysis/model/syntax_error/mod.rs b/src/syntax_analysis/model/syntax_error/mod.rs deleted file mode 100644 index b8cfabd8..00000000 --- a/src/syntax_analysis/model/syntax_error/mod.rs +++ /dev/null @@ -1,78 +0,0 @@ -use thiserror::Error; - -use crate::lexical_analysis::model::token::Token; - -#[derive(Error, Debug)] -pub(crate) enum SyntaxError { - // Return statement. - #[error("A return statement must start with Return token.")] - MissingReturn, - - // Let statement. - #[error("A let statement must start with Let token.")] - MissingLet, - #[error("A let statement must have a variable identifier after the Let token.")] - MissingLetIdentifier, - #[error("A let statement must have an assignment operator after the Identifier token.")] - MissingLetAssignment, - - // Right hand prefix. - #[error("A prefix expression must have a right hand expression.")] - MissingRightHandToPrefixExpression, - - // If expression. - #[error("A if expression must start with If token.")] - MissingIf, - #[error("A if expression must have a OpeningRoundBracket token after the If token.")] - MissingIfOpeningRoundBracket, - #[error("A if expression must have a ClosingRoundBracket token after the conditional.")] - MissingIfClosingRoundBracket, - - // Grouped expression. - #[error("A grouped expression must start with a OpeningRoundBracket token.")] - MissingGroupedOpeningRoundBracket, - #[error("A grouped expression must end with a ClosingRoundBracket token.")] - MissingGroupedClosingRoundBracket, - - // Function expression. - #[error("A function expression must start with Function token.")] - MissingFunction, - #[error( - "A function expression must have a OpeningRoundBracket token after the Function token." - )] - MissingFunctionOpeningRoundBracket, - #[error("A function expression must have a ClosingRoundBracket token after the parameters.")] - MissingFunctionClosingRoundBracket, - #[error("Only allowed identifiers in function expression's parameters.")] - FunctionParameterNotIdentifier, - #[error("Parameters must be comma seperated identifiers.")] - FunctionParameterNotCommaSeperated, - #[error("FunctionParametersEndedAbruptly.")] - FunctionParametersEndedAbruptly, - - // Block expression. - #[error("A block must start with a OpeningCurlyBracket token.")] - MissingBlockOpeningCurlyBracket, - #[error("A block must end with a ClosingCurlyBracket token.")] - MissingBlockClosingCurlyBracket, - - // Call expression. - #[error("A call expression is not calling either an identifier or an inlined function.")] - CallExpressionNotIdentifierOrFunction, - #[error("A call expression must have a OpeningRoundBracket token after the Function token.")] - MissingCallExpressionOpeningRoundBracket, - #[error("A call expression must have a ClosingRoundBracket token after the parameters.")] - MissingCallExpressionClosingRoundBracket, - #[error("Parameters must be comma seperated identifiers.")] - CallExpressionParameterNotCommaSeperated, - #[error("CallExpressionParametersEndedAbruptly.")] - CallExpressionParametersEndedAbruptly, - - // Expression unparsable. - #[error("Do not know how to parse {0:?} as an expression.")] - UnparsableAsExpression(Token), - - // Unparsable. - #[error("No token to parse.")] - NoTokenToParse, -} diff --git a/src/syntax_analysis/statement/mod.rs b/src/syntax_analysis/statement/mod.rs index 9479e4ca..cdca58f1 100644 --- a/src/syntax_analysis/statement/mod.rs +++ b/src/syntax_analysis/statement/mod.rs @@ -1,14 +1,17 @@ use crate::lexical_analysis::model::token::Token; use crate::syntax_analysis::model::expression_precedence::ExpressionPrecedence; -use crate::syntax_analysis::model::syntax_error::SyntaxError; use crate::syntax_analysis::model::syntax_tree_node::{Statement, SyntaxTreeNode}; use crate::syntax_analysis::SyntaxAnalysis; impl SyntaxAnalysis<'_> { - pub(crate) fn parse_return_statement(&mut self) -> Result { + pub(crate) fn parse_return_statement(&mut self) -> anyhow::Result { debug!("Parsing a return statement."); - assert_token!(self, Token::Return, Err(SyntaxError::MissingReturn)); + assert_token!( + self, + Token::Return, + "A return statement must start with Return token." + ); let expression = self.get_expression(ExpressionPrecedence::Lowest)?; semicolon!(self); @@ -19,17 +22,27 @@ impl SyntaxAnalysis<'_> { }) } - pub(crate) fn parse_let_statement(&mut self) -> Result { + pub(crate) fn parse_let_statement(&mut self) -> anyhow::Result { debug!("Parsing a let statement."); - assert_token!(self, Token::Let, Err(SyntaxError::MissingLet)); + assert_token!( + self, + Token::Let, + "A let statement must start with Let token." + ); let identifier = match self.tokens.next() { Some(Token::Identifier { literal }) => literal, _ => { - return Err(SyntaxError::MissingLetIdentifier); + anyhow::bail!( + "A let statement must have a variable identifier after the Let token." + ); } }; - assert_token!(self, Token::Assign, Err(SyntaxError::MissingLetAssignment)); + assert_token!( + self, + Token::Assign, + "A let statement must have an assignment operator after the Identifier token." + ); let expression = self.get_expression(ExpressionPrecedence::Lowest)?; semicolon!(self); 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 57202f1e..53354cdd 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_boolean_infix_expression/mod.rs +assertion_line: 31 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 57202f1e..53354cdd 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_boolean_infix_expression/mod.rs +assertion_line: 31 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 57202f1e..53354cdd 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_boolean_infix_expression/mod.rs +assertion_line: 31 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 11f1e03c..ecfada1a 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/mod.rs +assertion_line: 26 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 11f1e03c..ecfada1a 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/mod.rs +assertion_line: 26 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 11f1e03c..ecfada1a 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/mod.rs +assertion_line: 26 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 11f1e03c..ecfada1a 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_boolean_prefix_expression/mod.rs +assertion_line: 26 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 6f199d61..18eb7ed5 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_infix_expression/mod.rs +assertion_line: 48 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 d39949af..6164649e 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/type_mismatch_integer_prefix_expression/mod.rs +assertion_line: 23 expression: error --- Err( - TypeMismatch, + "TypeMismatch", ) 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 8acf2117..f05acc5d 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/unknown_operator_integer_infix_expression/mod.rs +assertion_line: 32 expression: error --- Err( - UnknownOperator, + "UnknownOperator", ) 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 8acf2117..f05acc5d 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/unknown_operator_integer_infix_expression/mod.rs +assertion_line: 32 expression: error --- Err( - UnknownOperator, + "UnknownOperator", ) 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 8acf2117..f05acc5d 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/unknown_operator_integer_infix_expression/mod.rs +assertion_line: 32 expression: error --- Err( - UnknownOperator, + "UnknownOperator", ) 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 8acf2117..f05acc5d 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 @@ -1,7 +1,8 @@ --- source: src/tests/evaluation_error/unknown_operator_integer_infix_expression/mod.rs +assertion_line: 32 expression: error --- Err( - UnknownOperator, + "UnknownOperator", ) diff --git a/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_1_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_1_lexical_analysis_error.snap index f3a3988f..69babbd8 100644 --- a/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_1_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_1_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_characters/mod.rs +assertion_line: 15 expression: error --- Err( - UnparsableContext( - "`2`", - ), + "Unparsable context for lexical analysis \"`2`\".", ) diff --git a/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_2_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_2_lexical_analysis_error.snap index 8b6f4297..fc9d9a08 100644 --- a/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_2_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_2_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_characters/mod.rs +assertion_line: 15 expression: error --- Err( - UnparsableContext( - "&x", - ), + "Unparsable context for lexical analysis \"&x\".", ) diff --git a/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_3_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_3_lexical_analysis_error.snap index 0da6ed9a..ebadfbc3 100644 --- a/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_3_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_characters/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_characters__test_invalid_characters_case_3_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_characters/mod.rs +assertion_line: 15 expression: error --- Err( - UnparsableContext( - "|", - ), + "Unparsable context for lexical analysis \"|\".", ) diff --git a/src/tests/lexical_analysis_error/invalid_escaping_in_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_escaping_in_string_expression__test_invalid_escaping_in_string_expression_case_1_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_escaping_in_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_escaping_in_string_expression__test_invalid_escaping_in_string_expression_case_1_lexical_analysis_error.snap index 10a0865f..eff958c5 100644 --- a/src/tests/lexical_analysis_error/invalid_escaping_in_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_escaping_in_string_expression__test_invalid_escaping_in_string_expression_case_1_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_escaping_in_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_escaping_in_string_expression__test_invalid_escaping_in_string_expression_case_1_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_escaping_in_string_expression/mod.rs +assertion_line: 19 expression: error --- Err( - IllegalEscaping( - 'x', - ), + "Illegal escaping of the character 'x'.", ) diff --git a/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_1_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_1_lexical_analysis_error.snap index 13605759..d7b99126 100644 --- a/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_1_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_1_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_integer_expression/mod.rs +assertion_line: 15 expression: error --- Err( - UnparsableContext( - "51a23", - ), + "Unparsable context for lexical analysis \"51a23\".", ) diff --git a/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_2_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_2_lexical_analysis_error.snap index 64f58cd4..04a905b9 100644 --- a/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_2_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_2_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_integer_expression/mod.rs +assertion_line: 15 expression: error --- Err( - UnparsableContext( - "123.0", - ), + "Unparsable context for lexical analysis \"123.0\".", ) diff --git a/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_3_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_3_lexical_analysis_error.snap index 94d6dab1..2e6a6df9 100644 --- a/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_3_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_integer_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_integer_expression__test_invalid_integer_expression_case_3_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_integer_expression/mod.rs +assertion_line: 15 expression: error --- Err( - UnparsableContext( - "0xFF", - ), + "Unparsable context for lexical analysis \"0xFF\".", ) diff --git a/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_1_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_1_lexical_analysis_error.snap index 820a880f..df0b3330 100644 --- a/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_1_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_1_lexical_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_string_expression/mod.rs +assertion_line: 18 expression: error --- Err( - StringNotClosed, + "String not closed before the end of the code.", ) diff --git a/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_2_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_2_lexical_analysis_error.snap index 797cdcc7..e4e31f55 100644 --- a/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_2_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_2_lexical_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_string_expression/mod.rs +assertion_line: 18 expression: error --- Err( - UnparsableContext( - "'this", - ), + "Unparsable context for lexical analysis \"'this\".", ) diff --git a/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_3_lexical_analysis_error.snap b/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_3_lexical_analysis_error.snap index 820a880f..df0b3330 100644 --- a/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_3_lexical_analysis_error.snap +++ b/src/tests/lexical_analysis_error/invalid_string_expression/snapshots/monkey_interpreter__tests__lexical_analysis_error__invalid_string_expression__test_invalid_string_expression_case_3_lexical_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/lexical_analysis_error/invalid_string_expression/mod.rs +assertion_line: 18 expression: error --- Err( - StringNotClosed, + "String not closed before the end of the code.", ) diff --git a/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_1_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_1_syntax_analysis_error.snap index 4bcc0f9a..79181563 100644 --- a/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_1_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_1_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/mod.rs +assertion_line: 20 expression: error --- Err( - MissingRightHandToPrefixExpression, + "A prefix expression must have a right hand expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_2_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_2_syntax_analysis_error.snap index 4bcc0f9a..79181563 100644 --- a/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_2_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_2_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/mod.rs +assertion_line: 20 expression: error --- Err( - MissingRightHandToPrefixExpression, + "A prefix expression must have a right hand expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_3_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_3_syntax_analysis_error.snap index 4bcc0f9a..79181563 100644 --- a/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_3_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_boolean_prefix_expression__test_invalid_boolean_prefix_expression_case_3_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_boolean_prefix_expression/mod.rs +assertion_line: 20 expression: error --- Err( - MissingRightHandToPrefixExpression, + "A prefix expression must have a right hand expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_1_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_1_syntax_analysis_error.snap index 0f79f0e0..e7881a67 100644 --- a/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_1_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_1_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_integer_prefix_expression/mod.rs +assertion_line: 20 expression: error --- Err( - MissingRightHandToPrefixExpression, + "A prefix expression must have a right hand expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_2_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_2_syntax_analysis_error.snap index 0f79f0e0..e7881a67 100644 --- a/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_2_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_2_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_integer_prefix_expression/mod.rs +assertion_line: 20 expression: error --- Err( - MissingRightHandToPrefixExpression, + "A prefix expression must have a right hand expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_3_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_3_syntax_analysis_error.snap index 0f79f0e0..e7881a67 100644 --- a/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_3_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_integer_prefix_expression/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_integer_prefix_expression__test_invalid_integer_prefix_expression_case_3_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_integer_prefix_expression/mod.rs +assertion_line: 20 expression: error --- Err( - MissingRightHandToPrefixExpression, + "A prefix expression must have a right hand expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_1_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_1_syntax_analysis_error.snap index bb974293..998532dd 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_1_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_1_syntax_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - UnparsableAsExpression( - SemiColon, - ), + "Do not know how to parse SemiColon as an expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_2_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_2_syntax_analysis_error.snap index d563cd14..50f234dc 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_2_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_2_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - MissingLetIdentifier, + "A let statement must have a variable identifier after the Let token.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_3_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_3_syntax_analysis_error.snap index d3f685f9..d78a1fe3 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_3_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_3_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - MissingLetAssignment, + "A let statement must have an assignment operator after the Identifier token.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_4_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_4_syntax_analysis_error.snap index d3f685f9..d78a1fe3 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_4_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_4_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - MissingLetAssignment, + "A let statement must have an assignment operator after the Identifier token.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_5_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_5_syntax_analysis_error.snap index d3f685f9..d78a1fe3 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_5_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_5_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - MissingLetAssignment, + "A let statement must have an assignment operator after the Identifier token.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_6_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_6_syntax_analysis_error.snap index d3f685f9..d78a1fe3 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_6_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_6_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - MissingLetAssignment, + "A let statement must have an assignment operator after the Identifier token.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_7_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_7_syntax_analysis_error.snap index bb974293..998532dd 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_7_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_7_syntax_analysis_error.snap @@ -1,9 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - UnparsableAsExpression( - SemiColon, - ), + "Do not know how to parse SemiColon as an expression.", ) diff --git a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_8_syntax_analysis_error.snap b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_8_syntax_analysis_error.snap index d3f685f9..d78a1fe3 100644 --- a/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_8_syntax_analysis_error.snap +++ b/src/tests/syntax_analysis_error/invalid_let_statement/snapshots/monkey_interpreter__tests__syntax_analysis_error__invalid_let_statement__test_invalid_let_statement_case_8_syntax_analysis_error.snap @@ -1,7 +1,8 @@ --- source: src/tests/syntax_analysis_error/invalid_let_statement/mod.rs +assertion_line: 28 expression: error --- Err( - MissingLetAssignment, + "A let statement must have an assignment operator after the Identifier token.", )