about summary refs log tree commit diff
path: root/src/interpret/value.rs
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-11-14 22:40:36 +0100
committerMel <einebeere@gmail.com>2021-11-14 22:40:36 +0100
commitc891369f0ce69b2fe78846cae1202899595354b7 (patch)
treed2102071b57e0aa353b5444a7c2c2f0481be3d0f /src/interpret/value.rs
parent2a3ab5c161ac98cb3c6326173e5ed78089a9ed68 (diff)
downloadrabbithole-c891369f0ce69b2fe78846cae1202899595354b7.tar.zst
rabbithole-c891369f0ce69b2fe78846cae1202899595354b7.zip
Add return statements
Diffstat (limited to 'src/interpret/value.rs')
-rw-r--r--src/interpret/value.rs9
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
+        }
     }
 }