[docs] Fix duplicate arguments for JoinedAndSeparate

We can't see how many arguments are in the meta var name, so just
assume that it is the right number.

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

llvm-svn: 325805
This commit is contained in:
Jonas Hahnfeld 2018-02-22 17:06:27 +00:00
parent b8237d2e2b
commit 3c7b136a82
1 changed files with 15 additions and 7 deletions

View File

@ -245,19 +245,27 @@ void emitOptionWithArgs(StringRef Prefix, const Record *Option,
void emitOptionName(StringRef Prefix, const Record *Option, raw_ostream &OS) {
// Find the arguments to list after the option.
unsigned NumArgs = getNumArgsForKind(Option->getValueAsDef("Kind"), Option);
bool HasMetaVarName = !Option->isValueUnset("MetaVarName");
std::vector<std::string> Args;
if (!Option->isValueUnset("MetaVarName"))
if (HasMetaVarName)
Args.push_back(Option->getValueAsString("MetaVarName"));
else if (NumArgs == 1)
Args.push_back("<arg>");
while (Args.size() < NumArgs) {
Args.push_back(("<arg" + Twine(Args.size() + 1) + ">").str());
// Use '--args <arg1> <arg2>...' if any number of args are allowed.
if (Args.size() == 2 && NumArgs == UnlimitedArgs) {
Args.back() += "...";
break;
// Fill up arguments if this option didn't provide a meta var name or it
// supports an unlimited number of arguments. We can't see how many arguments
// already are in a meta var name, so assume it has right number. This is
// needed for JoinedAndSeparate options so that there arent't too many
// arguments.
if (!HasMetaVarName || NumArgs == UnlimitedArgs) {
while (Args.size() < NumArgs) {
Args.push_back(("<arg" + Twine(Args.size() + 1) + ">").str());
// Use '--args <arg1> <arg2>...' if any number of args are allowed.
if (Args.size() == 2 && NumArgs == UnlimitedArgs) {
Args.back() += "...";
break;
}
}
}