summaryrefslogtreecommitdiffstats
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/rebel-lang/src/typing.rs4
-rw-r--r--crates/rebel-lang/src/value.rs4
2 files changed, 8 insertions, 0 deletions
diff --git a/crates/rebel-lang/src/typing.rs b/crates/rebel-lang/src/typing.rs
index 3ee681a..34280cd 100644
--- a/crates/rebel-lang/src/typing.rs
+++ b/crates/rebel-lang/src/typing.rs
@@ -454,6 +454,10 @@ impl<'scope> Context<'scope> {
}
fn type_block(&mut self, block: &ast::Block) -> Result<Type> {
+ if let [ast::BlockStmt::Expr { expr }] = &block.0[..] {
+ return self.type_expr(expr);
+ }
+
let (ret, upvalues) = self.type_scope(&block.0)?;
self.0.initialize_all(upvalues);
Ok(ret)
diff --git a/crates/rebel-lang/src/value.rs b/crates/rebel-lang/src/value.rs
index 8ee202d..bca3fee 100644
--- a/crates/rebel-lang/src/value.rs
+++ b/crates/rebel-lang/src/value.rs
@@ -395,6 +395,10 @@ impl<'scope> Context<'scope> {
}
fn eval_block(&mut self, block: &ast::Block) -> Result<Value> {
+ if let [ast::BlockStmt::Expr { expr }] = &block.0[..] {
+ return self.eval_expr(expr);
+ }
+
let (ret, upvalues) = self.eval_scope(&block.0)?;
self.0.initialize_all(upvalues);
Ok(ret)