forked from OSchip/llvm-project
[clang][cli] NFC: Make parsing macro reusable
This is necessary for a future patch, where we start using this macro in another function. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D93702
This commit is contained in:
parent
a7cbc32a91
commit
fcd1e35e4c
|
@ -1399,6 +1399,21 @@ static bool checkVerifyPrefixes(const std::vector<std::string> &VerifyPrefixes,
|
|||
return Success;
|
||||
}
|
||||
|
||||
#define PARSE_OPTION_WITH_MARSHALLING(ARGS, DIAGS, SUCCESS, ID, FLAGS, PARAM, \
|
||||
SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
|
||||
IMPLIED_CHECK, IMPLIED_VALUE, \
|
||||
NORMALIZER, MERGER, TABLE_INDEX) \
|
||||
if ((FLAGS)&options::CC1Option) { \
|
||||
this->KEYPATH = MERGER(this->KEYPATH, DEFAULT_VALUE); \
|
||||
if (IMPLIED_CHECK) \
|
||||
this->KEYPATH = MERGER(this->KEYPATH, IMPLIED_VALUE); \
|
||||
if (SHOULD_PARSE) \
|
||||
if (auto MaybeValue = \
|
||||
NORMALIZER(OPT_##ID, TABLE_INDEX, ARGS, DIAGS, SUCCESS)) \
|
||||
this->KEYPATH = MERGER( \
|
||||
this->KEYPATH, static_cast<decltype(this->KEYPATH)>(*MaybeValue)); \
|
||||
}
|
||||
|
||||
bool CompilerInvocation::parseSimpleArgs(const ArgList &Args,
|
||||
DiagnosticsEngine &Diags) {
|
||||
bool Success = true;
|
||||
|
@ -1408,23 +1423,18 @@ bool CompilerInvocation::parseSimpleArgs(const ArgList &Args,
|
|||
HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
|
||||
DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
|
||||
MERGER, EXTRACTOR, TABLE_INDEX) \
|
||||
if ((FLAGS)&options::CC1Option) { \
|
||||
this->KEYPATH = MERGER(this->KEYPATH, DEFAULT_VALUE); \
|
||||
if (IMPLIED_CHECK) \
|
||||
this->KEYPATH = MERGER(this->KEYPATH, IMPLIED_VALUE); \
|
||||
if (SHOULD_PARSE) \
|
||||
if (auto MaybeValue = \
|
||||
NORMALIZER(OPT_##ID, TABLE_INDEX, Args, Diags, Success)) \
|
||||
this->KEYPATH = MERGER( \
|
||||
this->KEYPATH, static_cast<decltype(this->KEYPATH)>(*MaybeValue)); \
|
||||
}
|
||||
|
||||
PARSE_OPTION_WITH_MARSHALLING(Args, Diags, Success, ID, FLAGS, PARAM, \
|
||||
SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
|
||||
IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, \
|
||||
MERGER, TABLE_INDEX)
|
||||
#include "clang/Driver/Options.inc"
|
||||
#undef OPTION_WITH_MARSHALLING
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
#undef PARSE_OPTION_WITH_MARSHALLING
|
||||
|
||||
bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,
|
||||
DiagnosticsEngine *Diags,
|
||||
bool DefaultDiagColor) {
|
||||
|
|
Loading…
Reference in New Issue