forked from extern/nushell
Allow arguments for the last flag in short flag batch (#8808)
# Description _Fixes #5923_ Currently `nushell` doesn't allow short flag batches to contain arguments, despite this being a common pattern in commands like `git commit -am 'My commit message'`. This PR relaxes this so that the last flag in the batch can take an argument. # User-Facing Changes - `nu::parser::short_flag_arg_cant_take_arg` has been replaced by `nu::parser::only_last_flag_in_batch_can_take_arg` and is displayed when a flag other then the last in a short flag batch takes an argument. # Tests + Formatting - Both [`test_parser.rs`](48af0ebc3c/crates/nu-parser/tests/test_parser.rs (L640-L704)
) and [`test_known_external.rs`](48af0ebc3c/src/tests/test_known_external.rs (L42-L61)
) have been updated to test the new allowed and disallowed scenarios. --------- Co-authored-by: sholderbach <sholderbach@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
fff4de5c44
commit
1d68c48a92
@@ -292,9 +292,9 @@ pub enum ParseError {
|
||||
#[diagnostic(code(nu::parser::missing_flag_param))]
|
||||
MissingFlagParam(String, #[label = "flag missing {0} argument"] Span),
|
||||
|
||||
#[error("Batches of short flags can't take arguments.")]
|
||||
#[diagnostic(code(nu::parser::short_flag_arg_cant_take_arg))]
|
||||
ShortFlagBatchCantTakeArg(#[label = "short flag batches can't take args"] Span),
|
||||
#[error("Only the last flag in a short flag batch can take an argument.")]
|
||||
#[diagnostic(code(nu::parser::only_last_flag_in_batch_can_take_arg))]
|
||||
OnlyLastFlagInBatchCanTakeArg(#[label = "only the last flag can take args"] Span),
|
||||
|
||||
#[error("Missing required positional argument.")]
|
||||
#[diagnostic(code(nu::parser::missing_positional), help("Usage: {2}"))]
|
||||
@@ -473,7 +473,7 @@ impl ParseError {
|
||||
ParseError::RequiredAfterOptional(_, s) => *s,
|
||||
ParseError::UnknownType(s) => *s,
|
||||
ParseError::MissingFlagParam(_, s) => *s,
|
||||
ParseError::ShortFlagBatchCantTakeArg(s) => *s,
|
||||
ParseError::OnlyLastFlagInBatchCanTakeArg(s) => *s,
|
||||
ParseError::MissingPositional(_, s, _) => *s,
|
||||
ParseError::KeywordMissingArgument(_, _, s) => *s,
|
||||
ParseError::MissingType(s) => *s,
|
||||
|
Reference in New Issue
Block a user