redirection shouldn't get passed through unless it's the value that's going to be returned in out_reg

This commit is contained in:
Devyn Cairns 2024-07-09 17:50:35 -07:00
parent 5d083cdaee
commit 55a4772f4c
3 changed files with 22 additions and 29 deletions

View File

@ -90,7 +90,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
part_expr, part_expr,
redirect_modes.with_capture_out(part_expr.span), RedirectModes::capture_out(part_expr.span),
None, None,
reg, reg,
)?; )?;
@ -148,7 +148,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
subexpr, subexpr,
redirect_modes.with_capture_out(subexpr.span), RedirectModes::capture_out(subexpr.span),
None, None,
out_reg, out_reg,
)?; )?;
@ -196,7 +196,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
expr, expr,
redirect_modes.with_capture_out(expr.span), RedirectModes::capture_out(expr.span),
None, None,
reg, reg,
)?; )?;
@ -244,7 +244,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
column, column,
redirect_modes.with_capture_out(column.span), RedirectModes::capture_out(column.span),
None, None,
reg, reg,
)?; )?;
@ -269,7 +269,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
item, item,
redirect_modes.with_capture_out(item.span), RedirectModes::capture_out(item.span),
None, None,
item_reg, item_reg,
)?; )?;
@ -316,7 +316,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
key, key,
redirect_modes.with_capture_out(key.span), RedirectModes::capture_out(key.span),
None, None,
key_reg, key_reg,
)?; )?;
@ -324,7 +324,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
val, val,
redirect_modes.with_capture_out(val.span), RedirectModes::capture_out(val.span),
None, None,
val_reg, val_reg,
)?; )?;
@ -344,7 +344,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
expr, expr,
redirect_modes.with_capture_out(expr.span), RedirectModes::capture_out(expr.span),
None, None,
reg, reg,
)?; )?;
@ -462,7 +462,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
exprs_iter.next().expect("peek() was Some"), exprs_iter.next().expect("peek() was Some"),
redirect_modes.with_capture_out(expr.span), RedirectModes::capture_out(expr.span),
None, None,
out_reg, out_reg,
)?; )?;
@ -478,7 +478,7 @@ pub(crate) fn compile_expression(
working_set, working_set,
builder, builder,
expr, expr,
redirect_modes.with_capture_out(expr.span), RedirectModes::capture_out(expr.span),
None, None,
scratch_reg, scratch_reg,
)?; )?;

View File

@ -47,7 +47,7 @@ pub(crate) fn compile_if(
working_set, working_set,
builder, builder,
condition, condition,
redirect_modes.with_capture_out(condition.span), RedirectModes::capture_out(condition.span),
None, None,
condition_reg, condition_reg,
)?; )?;
@ -181,7 +181,7 @@ pub(crate) fn compile_match(
working_set, working_set,
builder, builder,
match_expr, match_expr,
redirect_modes.with_capture_out(match_expr.span), RedirectModes::capture_out(match_expr.span),
None, None,
match_reg, match_reg,
)?; )?;
@ -233,7 +233,7 @@ pub(crate) fn compile_match(
working_set, working_set,
builder, builder,
guard, guard,
redirect_modes.with_capture_out(guard.span), RedirectModes::capture_out(guard.span),
None, None,
guard_reg, guard_reg,
)?; )?;
@ -294,7 +294,7 @@ pub(crate) fn compile_let(
working_set: &StateWorkingSet, working_set: &StateWorkingSet,
builder: &mut BlockBuilder, builder: &mut BlockBuilder,
call: &Call, call: &Call,
redirect_modes: RedirectModes, _redirect_modes: RedirectModes,
io_reg: RegId, io_reg: RegId,
) -> Result<(), CompileError> { ) -> Result<(), CompileError> {
// Pseudocode: // Pseudocode:
@ -319,7 +319,7 @@ pub(crate) fn compile_let(
working_set, working_set,
builder, builder,
block, block,
redirect_modes.with_capture_out(call.head), RedirectModes::capture_out(call.head),
Some(io_reg), Some(io_reg),
io_reg, io_reg,
)?; )?;
@ -434,7 +434,7 @@ pub(crate) fn compile_try(
working_set, working_set,
builder, builder,
catch_expr, catch_expr,
redirect_modes.with_capture_out(catch_expr.span), RedirectModes::capture_out(catch_expr.span),
None, None,
closure_reg, closure_reg,
)?; )?;
@ -640,7 +640,7 @@ pub(crate) fn compile_while(
working_set: &StateWorkingSet, working_set: &StateWorkingSet,
builder: &mut BlockBuilder, builder: &mut BlockBuilder,
call: &Call, call: &Call,
redirect_modes: RedirectModes, _redirect_modes: RedirectModes,
io_reg: RegId, io_reg: RegId,
) -> Result<(), CompileError> { ) -> Result<(), CompileError> {
// Pseudocode: // Pseudocode:
@ -671,7 +671,7 @@ pub(crate) fn compile_while(
working_set, working_set,
builder, builder,
cond_arg, cond_arg,
redirect_modes.with_capture_out(call.head), RedirectModes::capture_out(call.head),
None, None,
io_reg, io_reg,
)?; )?;
@ -714,7 +714,7 @@ pub(crate) fn compile_for(
working_set: &StateWorkingSet, working_set: &StateWorkingSet,
builder: &mut BlockBuilder, builder: &mut BlockBuilder,
call: &Call, call: &Call,
redirect_modes: RedirectModes, _redirect_modes: RedirectModes,
io_reg: RegId, io_reg: RegId,
) -> Result<(), CompileError> { ) -> Result<(), CompileError> {
// Pseudocode: // Pseudocode:
@ -755,7 +755,7 @@ pub(crate) fn compile_for(
working_set, working_set,
builder, builder,
in_expr, in_expr,
redirect_modes.with_capture_out(in_expr.span), RedirectModes::capture_out(in_expr.span),
None, None,
stream_reg, stream_reg,
)?; )?;
@ -871,7 +871,7 @@ pub(crate) fn compile_return(
working_set: &StateWorkingSet, working_set: &StateWorkingSet,
builder: &mut BlockBuilder, builder: &mut BlockBuilder,
call: &Call, call: &Call,
redirect_modes: RedirectModes, _redirect_modes: RedirectModes,
io_reg: RegId, io_reg: RegId,
) -> Result<(), CompileError> { ) -> Result<(), CompileError> {
// Pseudocode: // Pseudocode:
@ -883,7 +883,7 @@ pub(crate) fn compile_return(
working_set, working_set,
builder, builder,
arg_expr, arg_expr,
redirect_modes.with_capture_out(arg_expr.span), RedirectModes::capture_out(arg_expr.span),
None, None,
io_reg, io_reg,
)?; )?;

View File

@ -27,13 +27,6 @@ impl RedirectModes {
err: Some(RedirectMode::Caller.into_spanned(span)), err: Some(RedirectMode::Caller.into_spanned(span)),
} }
} }
pub(crate) fn with_capture_out(&self, span: Span) -> Self {
RedirectModes {
out: Some(RedirectMode::Capture.into_spanned(span)),
err: self.err,
}
}
} }
pub(crate) fn redirection_target_to_mode( pub(crate) fn redirection_target_to_mode(