Fixed interrupting a for-loop over a list bug #5378 (#5408)

Signed-off-by: gipsyh <gipsyh.icu@gmail.com>
This commit is contained in:
Yuheng Su 2022-05-02 15:56:37 +08:00 committed by GitHub
parent 74f1c5b67b
commit 07a7bb14bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,8 +2,8 @@ use nu_engine::{eval_block, eval_expression, CallExt};
use nu_protocol::ast::Call;
use nu_protocol::engine::{CaptureBlock, Command, EngineState, Stack};
use nu_protocol::{
Category, Example, IntoInterruptiblePipelineData, PipelineData, Signature, Span, SyntaxShape,
Value,
Category, Example, IntoInterruptiblePipelineData, ListStream, PipelineData, Signature, Span,
SyntaxShape, Value,
};
#[derive(Clone)]
@ -88,8 +88,8 @@ https://www.nushell.sh/book/thinking_in_nushell.html#parsing-and-evaluation-are-
let redirect_stderr = call.redirect_stderr;
match values {
Value::List { vals, .. } => Ok(vals
.into_iter()
Value::List { vals, .. } => {
Ok(ListStream::from_stream(vals.into_iter(), ctrlc.clone())
.enumerate()
.map(move |(idx, x)| {
stack.with_env(&orig_env_vars, &orig_env_hidden);
@ -127,7 +127,8 @@ https://www.nushell.sh/book/thinking_in_nushell.html#parsing-and-evaluation-are-
}
})
.filter(|x| !x.is_nothing())
.into_pipeline_data(ctrlc)),
.into_pipeline_data(ctrlc))
}
Value::Range { val, .. } => Ok(val
.into_range_iter(ctrlc.clone())?
.enumerate()