diff options
Diffstat (limited to 'src/interpret/value.rs')
| -rw-r--r-- | src/interpret/value.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/interpret/value.rs b/src/interpret/value.rs index dd8ad54..d108c68 100644 --- a/src/interpret/value.rs +++ b/src/interpret/value.rs @@ -261,10 +261,13 @@ impl Value { // Yes, we create a new walker for every function call, // it's *way* easier that way. let mut walker = Walker::new_with_scope(scope); - let result = - walker.walk_expression(&Expression::Block(Box::new(called.node.body.clone())))?; + let result = walker.walk_expression(&Expression::Block(Box::new(called.node.body.clone()))); - Ok(result) + if let Err(WalkerError::Return(returned)) = result { + Ok(returned) + } else { + result + } } } |
