diff --git a/vlib/flag/flag.v b/vlib/flag/flag.v index 2faee64c6d..e62acb535f 100644 --- a/vlib/flag/flag.v +++ b/vlib/flag/flag.v @@ -176,7 +176,7 @@ fn (mut fs FlagParser) parse_bool_value(longhand string, shorthand byte) ?string fs.args.delete(i) return val } - if arg[0] == `-` && arg[1] != `-` && arg.index_byte(shorthand) != -1 { + if arg.len > 1 && arg[0] == `-` && arg[1] != `-` && arg.index_byte(shorthand) != -1 { // -abc is equivalent to -a -b -c return 'true' } diff --git a/vlib/flag/flag_test.v b/vlib/flag/flag_test.v index e8f695dc8f..4de8c2255b 100644 --- a/vlib/flag/flag_test.v +++ b/vlib/flag/flag_test.v @@ -344,3 +344,11 @@ fn test_long_options_that_start_with_the_same_letter_as_another_short_option_bot assert verbose == true assert vabc == '/abc' } + +fn test_single_dash() { + mut fp := flag.new_flag_parser([ + '-' + ]) + flag_update := fp.bool('update', `u`, false, 'Update tools') + assert flag_update == false +}