Skip to content

Commit 8e23fb3

Browse files
committed
refactor: moving to anyhow context
Closed issue #50
1 parent af9ab98 commit 8e23fb3

83 files changed

Lines changed: 216 additions & 319 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 0 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ pretty_env_logger = "0.5.0"
1919
# For CLI argument parsing.
2020
clap = { version = "4.5.0", features = ["derive"] }
2121

22-
# For custom errors.
23-
thiserror = "2.0.0"
24-
2522
# For error handling.
2623
anyhow = "1.0.89"
2724

src/evaluator/expression/boolean/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43

54
impl Evaluator {
6-
pub(super) fn evaluate_boolean(&self, literal: bool) -> Result<Object, EvaluationError> {
5+
pub(super) fn evaluate_boolean(&self, literal: bool) -> anyhow::Result<Object> {
76
match literal {
87
true => Ok(Object::True),
98
false => Ok(Object::False),

src/evaluator/expression/call/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43
use crate::syntax_analysis::model::syntax_tree_node::Expression;
@@ -8,7 +7,7 @@ impl Evaluator {
87
&mut self,
98
function: Expression,
109
arguments: Vec<Expression>,
11-
) -> Result<Object, EvaluationError> {
10+
) -> anyhow::Result<Object> {
1211
match self.evaluate_expression(function)? {
1312
Object::Function { parameters, block } => {
1413
self.environment.push();
@@ -24,7 +23,7 @@ impl Evaluator {
2423
self.environment.pop();
2524
Ok(block_call_evaluation)
2625
}
27-
_ => Err(EvaluationError::UncallableObject),
26+
_ => anyhow::bail!("UncallableObject"),
2827
}
2928
}
3029
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43
use crate::syntax_analysis::model::syntax_tree_node::Block;
@@ -8,7 +7,7 @@ impl Evaluator {
87
&self,
98
parameters: Vec<String>,
109
block: Block,
11-
) -> Result<Object, EvaluationError> {
10+
) -> anyhow::Result<Object> {
1211
Ok(Object::Function { parameters, block })
1312
}
1413
}

src/evaluator/expression/if_expression/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43
use crate::syntax_analysis::model::syntax_tree_node::{Block, Expression};
@@ -9,7 +8,7 @@ impl Evaluator {
98
condition: Expression,
109
consequence: Block,
1110
alternative: Option<Block>,
12-
) -> Result<Object, EvaluationError> {
11+
) -> anyhow::Result<Object> {
1312
match self.evaluate_expression(condition)? {
1413
Object::Null | Object::False => match alternative {
1514
Some(block) => self.evaluate_block(block),

src/evaluator/expression/infix/mod.rs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43
use crate::lexical_analysis::model::token::Token;
@@ -10,20 +9,20 @@ impl Evaluator {
109
left_hand: Expression,
1110
operator_token: Token,
1211
right_hand: Expression,
13-
) -> Result<Object, EvaluationError> {
14-
fn evaluate_same_boolean(operator_token: Token) -> Result<Object, EvaluationError> {
12+
) -> anyhow::Result<Object> {
13+
fn evaluate_same_boolean(operator_token: Token) -> anyhow::Result<Object> {
1514
match operator_token {
1615
Token::Equals => Ok(Object::True),
1716
Token::NotEquals => Ok(Object::False),
18-
_ => Err(EvaluationError::UnknownOperator),
17+
_ => anyhow::bail!("UnknownOperator"),
1918
}
2019
}
2120

22-
fn evaluate_opposite_boolean(operator_token: Token) -> Result<Object, EvaluationError> {
21+
fn evaluate_opposite_boolean(operator_token: Token) -> anyhow::Result<Object> {
2322
match operator_token {
2423
Token::Equals => Ok(Object::False),
2524
Token::NotEquals => Ok(Object::True),
26-
_ => Err(EvaluationError::UnknownOperator),
25+
_ => anyhow::bail!("UnknownOperator"),
2726
}
2827
}
2928

@@ -58,19 +57,19 @@ impl Evaluator {
5857
true => Ok(Object::True),
5958
false => Ok(Object::False),
6059
},
61-
_ => Err(EvaluationError::UnknownOperator),
60+
_ => anyhow::bail!("UnknownOperator"),
6261
},
63-
_ => Err(EvaluationError::TypeMismatch),
62+
_ => anyhow::bail!("TypeMismatch"),
6463
},
6564
Object::True => match self.evaluate_expression(right_hand)? {
6665
Object::True => evaluate_same_boolean(operator_token),
6766
Object::False => evaluate_opposite_boolean(operator_token),
68-
_ => Err(EvaluationError::TypeMismatch),
67+
_ => anyhow::bail!("TypeMismatch"),
6968
},
7069
Object::False => match self.evaluate_expression(right_hand)? {
7170
Object::False => evaluate_same_boolean(operator_token),
7271
Object::True => evaluate_opposite_boolean(operator_token),
73-
_ => Err(EvaluationError::TypeMismatch),
72+
_ => anyhow::bail!("TypeMismatch"),
7473
},
7574
Object::String { value: left_value } => match self.evaluate_expression(right_hand)? {
7675
Object::String { value: right_value } => match operator_token {
@@ -89,11 +88,11 @@ impl Evaluator {
8988
value: concatenated,
9089
})
9190
}
92-
_ => Err(EvaluationError::UnknownOperator),
91+
_ => anyhow::bail!("UnknownOperator"),
9392
},
94-
_ => Err(EvaluationError::TypeMismatch),
93+
_ => anyhow::bail!("TypeMismatch"),
9594
},
96-
_ => Err(EvaluationError::UnknownOperator),
95+
_ => anyhow::bail!("UnknownOperator"),
9796
}
9897
}
9998
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43

54
impl Evaluator {
6-
pub(super) fn evaluate_integer(&self, literal: i64) -> Result<Object, EvaluationError> {
5+
pub(super) fn evaluate_integer(&self, literal: i64) -> anyhow::Result<Object> {
76
Ok(Object::Integer { value: literal })
87
}
98
}

src/evaluator/expression/mod.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43
use crate::syntax_analysis::model::syntax_tree_node::*;
@@ -13,10 +12,7 @@ mod prefix;
1312
mod string;
1413

1514
impl Evaluator {
16-
pub(crate) fn evaluate_expression(
17-
&mut self,
18-
expression: Expression,
19-
) -> Result<Object, EvaluationError> {
15+
pub(crate) fn evaluate_expression(&mut self, expression: Expression) -> anyhow::Result<Object> {
2016
match expression {
2117
Expression::Integer { literal } => self.evaluate_integer(literal),
2218
Expression::String { literal } => self.evaluate_string(literal),
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::evaluator::model::evaluation_error::EvaluationError;
21
use crate::evaluator::model::object::Object;
32
use crate::evaluator::Evaluator;
43
use crate::syntax_analysis::model::syntax_tree_node::Expression;
@@ -7,25 +6,25 @@ impl Evaluator {
76
pub(super) fn evaluate_not_prefix_expression(
87
&mut self,
98
right_hand_expression: Expression,
10-
) -> Result<Object, EvaluationError> {
9+
) -> anyhow::Result<Object> {
1110
let object = self.evaluate_expression(right_hand_expression)?;
1211

1312
match object {
1413
Object::True => Ok(Object::False),
1514
Object::False => Ok(Object::True),
16-
_ => Err(EvaluationError::TypeMismatch),
15+
_ => anyhow::bail!("TypeMismatch"),
1716
}
1817
}
1918

2019
pub(super) fn evaluate_minus_prefix_expression(
2120
&mut self,
2221
right_hand_expression: Expression,
23-
) -> Result<Object, EvaluationError> {
22+
) -> anyhow::Result<Object> {
2423
let object = self.evaluate_expression(right_hand_expression)?;
2524

2625
match object {
2726
Object::Integer { value } => Ok(Object::Integer { value: -value }),
28-
_ => Err(EvaluationError::TypeMismatch),
27+
_ => anyhow::bail!("TypeMismatch"),
2928
}
3029
}
3130
}

0 commit comments

Comments
 (0)