mirror of
https://github.com/nushell/nushell.git
synced 2025-07-07 18:07:02 +02:00
prevent crash when use redirection with let/mut (#10139)
Fix #9992 I mistakenly messed up https://github.com/nushell/nushell/pull/10118 and this is a cleaned version. # Description * This pr changes the panic to errors while parsing `let`, now user will get the following errors: <img width="395" alt="scr" src="https://github.com/nushell/nushell/assets/1991933/4b39ac14-cd1f-47b3-9490-81009ca42717"> <img width="394" alt="scr" src="https://github.com/nushell/nushell/assets/1991933/71ce33ad-f4d0-4132-828f-9674b9603556"> <img width="440" alt="scr" src="https://github.com/nushell/nushell/assets/1991933/257eab4d-1a72-42db-b09e-f42bef33d2ec"> * `out+err>` is cached by `parse_expression` but not this, which may be a potential problem. * `Commond(None, ..)` remains panic for future bug report because I don't actually know when/how does it happen # User-Facing Changes Nushell won't crash when user typing `let a = 1 err> ...` # Tests + Formatting - `cargo fmt --all -- --check` : OK - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` : OK - `cargo test --workspace` : OK - `cargo run -- -c "use std testing; testing run-tests --path crates/nu-std"` : OK # After Submitting None Co-authored-by: Horasal <horsal@horsal.dev>
This commit is contained in:
@ -5439,6 +5439,17 @@ pub fn parse_pipeline(
|
||||
new_command.comments.extend_from_slice(&command.comments);
|
||||
new_command.parts.extend_from_slice(&command.parts);
|
||||
}
|
||||
LiteElement::Redirection(span, ..) => {
|
||||
working_set.error(ParseError::RedirectionInLetMut(*span, None))
|
||||
}
|
||||
LiteElement::SeparateRedirection { out, err } => {
|
||||
working_set.error(ParseError::RedirectionInLetMut(
|
||||
out.0.min(err.0),
|
||||
Some(out.0.max(err.0)),
|
||||
))
|
||||
}
|
||||
LiteElement::SameTargetRedirection { redirection, .. } => working_set
|
||||
.error(ParseError::RedirectionInLetMut(redirection.0, None)),
|
||||
_ => panic!("unsupported"),
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user