mirror of
https://github.com/fish-shell/fish-shell
synced 2024-11-15 09:27:38 +00:00
parent
0e707b88f0
commit
fdf398e435
5 changed files with 8 additions and 6 deletions
|
@ -179,7 +179,7 @@ void builtin_unknown_option(parser_t &parser, io_streams_t &streams, const wchar
|
|||
/// Perform error reporting for encounter with missing argument.
|
||||
void builtin_missing_argument(parser_t &parser, io_streams_t &streams, const wchar_t *cmd,
|
||||
const wchar_t *opt) {
|
||||
streams.err.append_format(BUILTIN_ERR_MISSING, cmd, opt);
|
||||
streams.err.append_format(BUILTIN_ERR_MISSING, cmd, opt + std::wcslen(opt) - 1);
|
||||
builtin_print_error_trailer(parser, streams.err, cmd);
|
||||
}
|
||||
|
||||
|
|
|
@ -550,7 +550,8 @@ static int argparse_parse_flags(parser_t &parser, argparse_cmd_opts_t &opts,
|
|||
wgetopter_t w;
|
||||
while ((opt = w.wgetopt_long(argc, argv, short_options, long_options, &long_idx)) != -1) {
|
||||
if (opt == ':') {
|
||||
streams.err.append_format(BUILTIN_ERR_MISSING, cmd, argv[w.woptind - 1]);
|
||||
const wchar_t *arg = argv[w.woptind - 1];
|
||||
streams.err.append_format(BUILTIN_ERR_MISSING, cmd, arg + std::wcslen(arg) - 1);
|
||||
return STATUS_INVALID_ARGS;
|
||||
} else if (opt == '?') {
|
||||
// It's not a recognized flag. See if it's an implicit int flag.
|
||||
|
|
|
@ -458,7 +458,8 @@ static int parse_opts(options_t *opts, int *optind, int n_req_args, int argc, wc
|
|||
int retval = fn->second(argv, parser, streams, w, opts);
|
||||
if (retval != STATUS_CMD_OK) return retval;
|
||||
} else if (opt == ':') {
|
||||
string_error(streams, BUILTIN_ERR_MISSING, cmd, argv[w.woptind - 1]);
|
||||
const wchar_t *arg = argv[w.woptind - 1];
|
||||
string_error(streams, BUILTIN_ERR_MISSING, cmd, arg + std::wcslen(arg) - 1);
|
||||
return STATUS_INVALID_ARGS;
|
||||
} else if (opt == '?') {
|
||||
string_unknown_option(parser, streams, cmd, argv[w.woptind - 1]);
|
||||
|
|
|
@ -305,5 +305,5 @@ begin
|
|||
end
|
||||
|
||||
# #6483 - error messages for missing arguments
|
||||
argparse -n foo r/required= -- foo -r
|
||||
# CHECKERR: foo: Expected argument for option -r
|
||||
argparse -n foo q r/required= -- foo -qr
|
||||
# CHECKERR: foo: Expected argument for option r
|
||||
|
|
|
@ -330,7 +330,7 @@ echo "stdin" | string repeat -n1 "and arg"; and echo "exit 0"
|
|||
# CHECKERR: string repeat: Too many arguments
|
||||
|
||||
string repeat -n; and echo "exit 0"
|
||||
# CHECKERR: string repeat: Expected argument for option -n
|
||||
# CHECKERR: string repeat: Expected argument for option n
|
||||
|
||||
# FIXME: Also triggers usage
|
||||
# string repeat -l fakearg
|
||||
|
|
Loading…
Reference in a new issue