summaryrefslogtreecommitdiff
path: root/lib/Option
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2017-07-26 09:09:56 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2017-07-26 09:09:56 +0000
commit2e3a5b7cc613c8fd877ba2e6460066b6ceb8d376 (patch)
tree741e3579f2f6cee49931429838d896a6aba7b36f /lib/Option
parent9d7507a837610cb6458acfed617a15487b64bbff (diff)
[libOption] - Add flag allowing to print options aliases in help text.
By default, we display only options that are not hidden and have help texts. This patch adds flag allowing to display aliases that have no help text. In this case help text of aliased option used instead. Differential revision: https://reviews.llvm.org/D35476 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Option')
-rw-r--r--lib/Option/OptTable.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/Option/OptTable.cpp b/lib/Option/OptTable.cpp
index f3b438e829d..071c9db8720 100644
--- a/lib/Option/OptTable.cpp
+++ b/lib/Option/OptTable.cpp
@@ -444,15 +444,14 @@ static const char *getOptionHelpGroup(const OptTable &Opts, OptSpecifier Id) {
}
void OptTable::PrintHelp(raw_ostream &OS, const char *Name, const char *Title,
- bool ShowHidden) const {
+ bool ShowHidden, bool ShowAllAliases) const {
PrintHelp(OS, Name, Title, /*Include*/ 0, /*Exclude*/
- (ShowHidden ? 0 : HelpHidden));
+ (ShowHidden ? 0 : HelpHidden), ShowAllAliases);
}
-
void OptTable::PrintHelp(raw_ostream &OS, const char *Name, const char *Title,
- unsigned FlagsToInclude,
- unsigned FlagsToExclude) const {
+ unsigned FlagsToInclude, unsigned FlagsToExclude,
+ bool ShowAllAliases) const {
OS << "OVERVIEW: " << Title << "\n";
OS << '\n';
OS << "USAGE: " << Name << " [options] <inputs>\n";
@@ -476,10 +475,19 @@ void OptTable::PrintHelp(raw_ostream &OS, const char *Name, const char *Title,
if (Flags & FlagsToExclude)
continue;
- if (const char *Text = getOptionHelpText(Id)) {
+ // If an alias doesn't have a help text, show a help text for the aliased
+ // option instead.
+ const char *HelpText = getOptionHelpText(Id);
+ if (!HelpText && ShowAllAliases) {
+ const Option Alias = getOption(Id).getAlias();
+ if (Alias.isValid())
+ HelpText = getOptionHelpText(Alias.getID());
+ }
+
+ if (HelpText) {
const char *HelpGroup = getOptionHelpGroup(*this, Id);
const std::string &OptName = getOptionHelpName(*this, Id);
- GroupedOptionHelp[HelpGroup].push_back({OptName, Text});
+ GroupedOptionHelp[HelpGroup].push_back({OptName, HelpText});
}
}