cmArgumentParser: Drop unused keywordsMissingValue argument to Parse()

All clients have been converted to encoding this requirement in their
bindings.
This commit is contained in:
Brad King
2022-07-20 15:52:45 -04:00
parent 9a7efb6813
commit f95a5832c7
5 changed files with 13 additions and 35 deletions

View File

@@ -83,8 +83,7 @@ bool cmCTestHandlerCommand::InitialPass(std::vector<std::string> const& args,
// Process input arguments.
std::vector<std::string> unparsedArguments;
std::vector<cm::string_view> parsedKeywords;
this->Parse(args, &unparsedArguments, /*keywordsMissingValue=*/nullptr,
&parsedKeywords);
this->Parse(args, &unparsedArguments, &parsedKeywords);
this->CheckArguments();
std::sort(parsedKeywords.begin(), parsedKeywords.end());

View File

@@ -113,9 +113,6 @@ void Instance::FinishKeyword()
this->ParseResults->AddKeywordError(this->Keyword,
" missing required value\n");
}
if (this->KeywordsMissingValue != nullptr) {
this->KeywordsMissingValue->emplace_back(this->Keyword);
}
if (this->Bindings.KeywordMissingValue) {
this->Bindings.KeywordMissingValue(*this, this->Keyword);
}

View File

@@ -115,13 +115,11 @@ class Instance
public:
Instance(ActionMap const& bindings, ParseResult* parseResult,
std::vector<std::string>* unparsedArguments,
std::vector<cm::string_view>* keywordsMissingValue,
std::vector<cm::string_view>* parsedKeywords,
void* result = nullptr)
: Bindings(bindings)
, ParseResults(parseResult)
, UnparsedArguments(unparsedArguments)
, KeywordsMissingValue(keywordsMissingValue)
, ParsedKeywords(parsedKeywords)
, Result(result)
{
@@ -157,7 +155,6 @@ private:
ActionMap const& Bindings;
ParseResult* ParseResults = nullptr;
std::vector<std::string>* UnparsedArguments = nullptr;
std::vector<cm::string_view>* KeywordsMissingValue = nullptr;
std::vector<cm::string_view>* ParsedKeywords = nullptr;
void* Result = nullptr;
@@ -193,25 +190,22 @@ public:
template <typename Range>
bool Parse(Result& result, Range const& args,
std::vector<std::string>* unparsedArguments,
std::vector<cm::string_view>* keywordsMissingValue = nullptr,
std::vector<cm::string_view>* parsedKeywords = nullptr) const
{
using ArgumentParser::AsParseResultPtr;
ParseResult* parseResultPtr = AsParseResultPtr(result);
Instance instance(this->Bindings, parseResultPtr, unparsedArguments,
keywordsMissingValue, parsedKeywords, &result);
parsedKeywords, &result);
instance.Parse(args);
return parseResultPtr ? static_cast<bool>(*parseResultPtr) : true;
}
template <typename Range>
Result Parse(Range const& args, std::vector<std::string>* unparsedArguments,
std::vector<cm::string_view>* keywordsMissingValue = nullptr,
std::vector<cm::string_view>* parsedKeywords = nullptr) const
{
Result result;
this->Parse(result, args, unparsedArguments, keywordsMissingValue,
parsedKeywords);
this->Parse(result, args, unparsedArguments, parsedKeywords);
return result;
}
};
@@ -230,12 +224,11 @@ public:
template <typename Range>
ParseResult Parse(
Range const& args, std::vector<std::string>* unparsedArguments,
std::vector<cm::string_view>* keywordsMissingValue = nullptr,
std::vector<cm::string_view>* parsedKeywords = nullptr) const
{
ParseResult parseResult;
Instance instance(this->Bindings, &parseResult, unparsedArguments,
keywordsMissingValue, parsedKeywords);
parsedKeywords);
instance.Parse(args);
return parseResult;
}

View File

@@ -2498,9 +2498,8 @@ bool HandleGenerateCommand(std::vector<std::string> const& args,
std::vector<std::string> unparsedArguments;
std::vector<cm::string_view> parsedKeywords;
Arguments const arguments =
parser.Parse(cmMakeRange(args).advance(1), &unparsedArguments,
/*keywordsMissingValue=*/nullptr, &parsedKeywords);
Arguments const arguments = parser.Parse(
cmMakeRange(args).advance(1), &unparsedArguments, &parsedKeywords);
if (arguments.MaybeReportError(status.GetMakefile())) {
return true;

View File

@@ -63,14 +63,10 @@ std::initializer_list<cm::string_view> const args = {
};
bool verifyResult(Result const& result,
std::vector<std::string> const& unparsedArguments,
std::vector<cm::string_view> const& keywordsMissingValue)
std::vector<std::string> const& unparsedArguments)
{
static std::vector<std::string> const foobar = { "foo", "bar" };
static std::vector<std::string> const barfoo = { "bar", "foo" };
static std::vector<cm::string_view> const missing = { "STRING_1"_s,
"LIST_1"_s,
"LIST_4"_s };
static std::map<cm::string_view, std::string> const keywordErrors = {
{ "STRING_1"_s, " missing required value\n" },
{ "LIST_1"_s, " missing required value\n" },
@@ -117,7 +113,6 @@ bool verifyResult(Result const& result,
ASSERT_TRUE(unparsedArguments.size() == 1);
ASSERT_TRUE(unparsedArguments[0] == "bar");
ASSERT_TRUE(keywordsMissingValue == missing);
ASSERT_TRUE(result.GetKeywordErrors().size() == keywordErrors.size());
for (auto const& ke : result.GetKeywordErrors()) {
@@ -133,7 +128,6 @@ bool testArgumentParserDynamic()
{
Result result;
std::vector<std::string> unparsedArguments;
std::vector<cm::string_view> keywordsMissingValue;
static_cast<ArgumentParser::ParseResult&>(result) =
cmArgumentParser<void>{}
@@ -153,9 +147,9 @@ bool testArgumentParserDynamic()
.Bind("MULTI_2"_s, result.Multi2)
.Bind("MULTI_3"_s, result.Multi3)
.Bind("MULTI_4"_s, result.Multi4)
.Parse(args, &unparsedArguments, &keywordsMissingValue);
.Parse(args, &unparsedArguments);
return verifyResult(result, unparsedArguments, keywordsMissingValue);
return verifyResult(result, unparsedArguments);
}
static auto const parserStatic = //
@@ -181,20 +175,16 @@ static auto const parserStatic = //
bool testArgumentParserStatic()
{
std::vector<std::string> unparsedArguments;
std::vector<cm::string_view> keywordsMissingValue;
Result const result =
parserStatic.Parse(args, &unparsedArguments, &keywordsMissingValue);
return verifyResult(result, unparsedArguments, keywordsMissingValue);
Result const result = parserStatic.Parse(args, &unparsedArguments);
return verifyResult(result, unparsedArguments);
}
bool testArgumentParserStaticBool()
{
std::vector<std::string> unparsedArguments;
std::vector<cm::string_view> keywordsMissingValue;
Result result;
ASSERT_TRUE(parserStatic.Parse(result, args, &unparsedArguments,
&keywordsMissingValue) == false);
return verifyResult(result, unparsedArguments, keywordsMissingValue);
ASSERT_TRUE(parserStatic.Parse(result, args, &unparsedArguments) == false);
return verifyResult(result, unparsedArguments);
}
} // namespace