diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/rebel-lang/src/typing.rs | 4 | ||||
-rw-r--r-- | crates/rebel-lang/src/value.rs | 4 |
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) |