mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-04-26 14:01:13 -03:00
This fixes an issue very similar to #6483, For example, fish --login=root used to print this: fish: --login=root: unknown option But `--login` is a valid option to fish. So the above now prints: fish: --login=root: option does not take an argument This is done by modifying WGetOpter so that it returns a ';' if it encountered an option with an argument, but the option was not declared as taking an option (this is only possible with the --long=value or legacy -long=value syntax). All uses of WGetOpter (except echo, fish_indent, and some tests) are modified to then print an appropriate error message when ';' is returned. echo doesn't have any long options, so it will panic if gets a ';'. fish_indent doesn't print any error messages for invalid options anyway, and I wasn't sure if this was intentional or not. Moreover, WGetOpter now always returns a ':' for options that are missing an argument. And you can no longer prefix a your option spec with a ':' to enable this (since every use of WGetOpter was doing this anyway, except wgetopt::test_exchange and tests::wgetopt::test_wgetopt).
3 lines
110 B
Fish
3 lines
110 B
Fish
#RUN: %fish --interactive=value
|
|
# CHECKERR: {{.*fish}}: --interactive=value: option does not take an argument
|