[PATCH] D35476: [libOption] - Add flag allowing to print options aliases in help text.
George Rimar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 24 02:57:14 PDT 2017
grimar updated this revision to Diff 107874.
grimar added a comment.
- Change argument name, added lost description.
https://reviews.llvm.org/D35476
Files:
include/llvm/Option/OptTable.h
lib/Option/OptTable.cpp
Index: lib/Option/OptTable.cpp
===================================================================
--- lib/Option/OptTable.cpp
+++ lib/Option/OptTable.cpp
@@ -444,15 +444,14 @@
}
void OptTable::PrintHelp(raw_ostream &OS, const char *Name, const char *Title,
- bool ShowHidden) const {
+ bool ShowHidden, bool InferHelpText) const {
PrintHelp(OS, Name, Title, /*Include*/ 0, /*Exclude*/
- (ShowHidden ? 0 : HelpHidden));
+ (ShowHidden ? 0 : HelpHidden), InferHelpText);
}
-
void OptTable::PrintHelp(raw_ostream &OS, const char *Name, const char *Title,
- unsigned FlagsToInclude,
- unsigned FlagsToExclude) const {
+ unsigned FlagsToInclude, unsigned FlagsToExclude,
+ bool InferHelpText) const {
OS << "OVERVIEW: " << Title << "\n";
OS << '\n';
OS << "USAGE: " << Name << " [options] <inputs>\n";
@@ -476,10 +475,21 @@
if (Flags & FlagsToExclude)
continue;
- if (const char *Text = getOptionHelpText(Id)) {
+ // Aliases usually do not have help text set explicitly. If we want to show
+ // such aliases in help, we use associated aliased option help text value.
+ // If both alias and aliased option has no text, that proably means option
+ // is ignored.
+ const char *HelpText = getOptionHelpText(Id);
+ if (!HelpText && InferHelpText) {
+ 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});
}
}
Index: include/llvm/Option/OptTable.h
===================================================================
--- include/llvm/Option/OptTable.h
+++ include/llvm/Option/OptTable.h
@@ -191,12 +191,15 @@
/// \param FlagsToInclude - If non-zero, only include options with any
/// of these flags set.
/// \param FlagsToExclude - Exclude options with any of these flags set.
- void PrintHelp(raw_ostream &OS, const char *Name,
- const char *Title, unsigned FlagsToInclude,
- unsigned FlagsToExclude) const;
+ /// \param InferHelpText - If true, HelpText for aliases that was not set
+ /// explicitly will be infered from aliased option.
+ /// Used to render aliases.
+ void PrintHelp(raw_ostream &OS, const char *Name, const char *Title,
+ unsigned FlagsToInclude, unsigned FlagsToExclude,
+ bool InferHelpText) const;
- void PrintHelp(raw_ostream &OS, const char *Name,
- const char *Title, bool ShowHidden = false) const;
+ void PrintHelp(raw_ostream &OS, const char *Name, const char *Title,
+ bool ShowHidden = false, bool InferHelpText = false) const;
};
} // end namespace opt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35476.107874.patch
Type: text/x-patch
Size: 3167 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170724/423aa603/attachment.bin>
More information about the llvm-commits
mailing list