]> granicus.if.org Git - llvm/commit
[CommandLine] Don't print empty sentinel values from EnumValN lists in help text
authorJames Henderson <jh7370@my.bristol.ac.uk>
Mon, 4 Feb 2019 16:17:57 +0000 (16:17 +0000)
committerJames Henderson <jh7370@my.bristol.ac.uk>
Mon, 4 Feb 2019 16:17:57 +0000 (16:17 +0000)
commit6277ca3b6d99dd917876a839ce5a5039d5f253cf
tree214f0166dc050d45d93608de833ce30244b685cb
parent152f9e6296a773b0ff85f07d0d986c312340e142
[CommandLine] Don't print empty sentinel values from EnumValN lists in help text

In order to make an option value truly optional, both the ValueOptional
attribute and an empty-named value are required. Prior to this change,
this empty-named value appears in the command-line help text:

-some-option - some help text
  =v1        - description 1
  =v2        - description 2
  =          -

This change improves the help text for these sort of options in a number
of ways:

1) ValueOptional options with an empty-named value now print their help
   text twice: both without and then with '=<value>' after the name. The
   latter version then lists the allowed values after it.
2) Empty-named values with no help text in ValueOptional options are not
   listed in the permitted values.

-some-option         - some help text
-some-option=<value> - some help text
  =v1                - description 1
  =v2                - description 2

3) Otherwise empty-named options are printed as =<empty> rather than
   simply '='.
4) Option values without help text do not have the '-' separator
   printed.

-some-option=<value> - some help text
  =v1                - description 1
  =v2
  =<empty>           - description

It also tweaks the llvm-symbolizer -functions help text to not print a
trailing ':' as that looks bad combined with 1) above.

This is mostly a reland of r353048 which in turn was a reland of
r352750.

Reviewed by: ruiu, thopre, mstorsjo

Differential Revision: https://reviews.llvm.org/D57030

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353053 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Support/CommandLine.cpp
tools/llvm-symbolizer/llvm-symbolizer.cpp
unittests/Support/CommandLineTest.cpp