From 3c7b136a82de78440e09ddaf394f2ef452af1bb8 Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Thu, 22 Feb 2018 17:06:27 +0000 Subject: [PATCH] [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 --- clang/utils/TableGen/ClangOptionDocEmitter.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/clang/utils/TableGen/ClangOptionDocEmitter.cpp b/clang/utils/TableGen/ClangOptionDocEmitter.cpp index 5931451..734ff0b 100644 --- a/clang/utils/TableGen/ClangOptionDocEmitter.cpp +++ b/clang/utils/TableGen/ClangOptionDocEmitter.cpp @@ -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 Args; - if (!Option->isValueUnset("MetaVarName")) + if (HasMetaVarName) Args.push_back(Option->getValueAsString("MetaVarName")); else if (NumArgs == 1) Args.push_back(""); - while (Args.size() < NumArgs) { - Args.push_back(("").str()); - // Use '--args ...' 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(("").str()); + // Use '--args ...' if any number of args are allowed. + if (Args.size() == 2 && NumArgs == UnlimitedArgs) { + Args.back() += "..."; + break; + } } } -- 2.7.4