mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 09:05:47 +02:00
Split blocks and closures (#7075)
* Split closures and blocks * Tests mostly working * finish last fixes, passes all tests * fmt
This commit is contained in:
@ -492,19 +492,23 @@ pub fn eval_expression(
|
||||
.into_value(expr.span),
|
||||
)
|
||||
}
|
||||
Expr::RowCondition(block_id) | Expr::Block(block_id) => {
|
||||
Expr::RowCondition(block_id) | Expr::Closure(block_id) => {
|
||||
let mut captures = HashMap::new();
|
||||
let block = engine_state.get_block(*block_id);
|
||||
|
||||
for var_id in &block.captures {
|
||||
captures.insert(*var_id, stack.get_var(*var_id, expr.span)?);
|
||||
}
|
||||
Ok(Value::Block {
|
||||
Ok(Value::Closure {
|
||||
val: *block_id,
|
||||
captures,
|
||||
span: expr.span,
|
||||
})
|
||||
}
|
||||
Expr::Block(block_id) => Ok(Value::Block {
|
||||
val: *block_id,
|
||||
span: expr.span,
|
||||
}),
|
||||
Expr::List(x) => {
|
||||
let mut output = vec![];
|
||||
for expr in x {
|
||||
|
Reference in New Issue
Block a user