mirror of
https://github.com/nushell/nushell.git
synced 2025-05-10 13:04:28 +02:00
partially fix lazy evaluation
This commit is contained in:
parent
2557a99e87
commit
122d28afac
@ -146,12 +146,12 @@ fn default(
|
|||||||
default_when_empty: bool,
|
default_when_empty: bool,
|
||||||
) -> Result<PipelineData, ShellError> {
|
) -> Result<PipelineData, ShellError> {
|
||||||
let metadata = input.metadata();
|
let metadata = input.metadata();
|
||||||
let dv: Spanned<Value> = call.req(engine_state, stack, 0)?;
|
let default_value: Spanned<Value> = call.req(engine_state, stack, 0)?;
|
||||||
let default = eval_default(engine_state, stack, dv.item)?;
|
|
||||||
let column: Option<Spanned<String>> = call.opt(engine_state, stack, 1)?;
|
let column: Option<Spanned<String>> = call.opt(engine_state, stack, 1)?;
|
||||||
|
|
||||||
if let Some(column) = column {
|
if let Some(column) = column {
|
||||||
let default = default.into_value(dv.span)?;
|
let default = eval_default(engine_state, stack, default_value.item)?
|
||||||
|
.into_value(default_value.span)?;
|
||||||
input
|
input
|
||||||
.map(
|
.map(
|
||||||
move |mut item| match item {
|
move |mut item| match item {
|
||||||
@ -181,7 +181,7 @@ fn default(
|
|||||||
|| (default_when_empty
|
|| (default_when_empty
|
||||||
&& matches!(input, PipelineData::Value(ref value, _) if value.is_empty()))
|
&& matches!(input, PipelineData::Value(ref value, _) if value.is_empty()))
|
||||||
{
|
{
|
||||||
Ok(default)
|
eval_default(engine_state, stack, default_value.item)
|
||||||
} else if default_when_empty && matches!(input, PipelineData::ListStream(..)) {
|
} else if default_when_empty && matches!(input, PipelineData::ListStream(..)) {
|
||||||
let PipelineData::ListStream(ls, metadata) = input else {
|
let PipelineData::ListStream(ls, metadata) = input else {
|
||||||
unreachable!()
|
unreachable!()
|
||||||
@ -189,7 +189,7 @@ fn default(
|
|||||||
let span = ls.span();
|
let span = ls.span();
|
||||||
let mut stream = ls.into_inner().peekable();
|
let mut stream = ls.into_inner().peekable();
|
||||||
if stream.peek().is_none() {
|
if stream.peek().is_none() {
|
||||||
return Ok(default);
|
return eval_default(engine_state, stack, default_value.item);
|
||||||
}
|
}
|
||||||
|
|
||||||
// stream's internal state already preserves the original signals config, so if this
|
// stream's internal state already preserves the original signals config, so if this
|
||||||
|
Loading…
Reference in New Issue
Block a user