mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 05:14:44 +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:
@ -466,6 +466,13 @@ pub enum ParseError {
|
||||
#[label("{label}")]
|
||||
span: Span,
|
||||
},
|
||||
|
||||
#[error("Redirection can not be used with let/mut.")]
|
||||
#[diagnostic()]
|
||||
RedirectionInLetMut(
|
||||
#[label("Not allowed here")] Span,
|
||||
#[label("...and here")] Option<Span>,
|
||||
),
|
||||
}
|
||||
|
||||
impl ParseError {
|
||||
@ -550,6 +557,7 @@ impl ParseError {
|
||||
ParseError::UnknownOperator(_, _, s) => *s,
|
||||
ParseError::InvalidLiteral(_, _, s) => *s,
|
||||
ParseError::LabeledErrorWithHelp { span: s, .. } => *s,
|
||||
ParseError::RedirectionInLetMut(s, _) => *s,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user