forked from extern/nushell
throw parser error when multiple short flags are defined without whitespace (#6000)
* throw error when multiple short flags are defined without whitespace * add tests
This commit is contained in:
parent
121e8678b6
commit
f85a1d003c
@ -1,5 +1,5 @@
|
||||
use nu_test_support::nu;
|
||||
use nu_test_support::playground::Playground;
|
||||
use nu_test_support::{nu, pipeline};
|
||||
use std::fs;
|
||||
|
||||
#[test]
|
||||
@ -18,3 +18,15 @@ def e [arg] {echo $arg}
|
||||
assert!(actual.out.contains("My echo\\n\\n"));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn def_errors_with_multiple_short_flags() {
|
||||
let actual = nu!(
|
||||
cwd: ".", pipeline(
|
||||
r#"
|
||||
def test-command [ --long(-l)(-o) ] {}
|
||||
"#
|
||||
));
|
||||
|
||||
assert!(actual.err.contains("expected one short flag"));
|
||||
}
|
||||
|
@ -3126,6 +3126,10 @@ pub fn parse_signature_helper(
|
||||
var_id: Some(var_id),
|
||||
default_value: None,
|
||||
}));
|
||||
} else if flags.len() >= 3 {
|
||||
error = error.or_else(|| {
|
||||
Some(ParseError::Expected("one short flag".into(), span))
|
||||
});
|
||||
} else {
|
||||
let short_flag = &flags[1];
|
||||
let short_flag = if !short_flag.starts_with(b"-")
|
||||
|
Loading…
Reference in New Issue
Block a user