@@ -34,6 +34,7 @@ enum class OptionKind {
3434 RemainingArgs,
3535 CommaJoined,
3636 JoinedOrSeparate,
37+ MultiArg,
3738};
3839
3940#define LLVM_MAKE_OPT_ID_WITH_ID_PREFIX (ID_PREFIX, PREFIX, NAME, ID, KIND, \
@@ -113,6 +114,7 @@ struct RawOption {
113114 unsigned flags;
114115 const char *helpText;
115116 const char *metaVar;
117+ unsigned numArgs;
116118
117119 bool isGroup () const {
118120 return kind == OptionKind::Group;
@@ -135,7 +137,7 @@ static const RawOption rawOptions[] = {
135137#define OPTION (PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
136138 HELPTEXT, METAVAR, VALUES) \
137139 { OptionID::Opt_##ID, PREFIX, NAME, swiftify (#ID), OptionKind::KIND, \
138- OptionID::Opt_##GROUP, OptionID::Opt_##ALIAS, FLAGS, HELPTEXT, METAVAR },
140+ OptionID::Opt_##GROUP, OptionID::Opt_##ALIAS, FLAGS, HELPTEXT, METAVAR, PARAM },
139141#include " swift/Option/Options.inc"
140142#undef OPTION
141143};
@@ -291,6 +293,10 @@ int makeOptions_main() {
291293 out << " .separate" ;
292294 break ;
293295
296+ case OptionKind::MultiArg:
297+ out << " .multiArg" ;
298+ break ;
299+
294300 case OptionKind::Group:
295301 case OptionKind::Unknown:
296302 assert (false && " Should have been filtered out" );
@@ -350,6 +356,9 @@ int makeOptions_main() {
350356 if (option.group != OptionID::Opt_INVALID) {
351357 out << " , group: ." << groups[groupIndexByID[option.group ]].id ;
352358 }
359+ if (option.kind == OptionKind::MultiArg) {
360+ out << " , numArgs: " << option.numArgs ;
361+ }
353362 out << " )\n " ;
354363 });
355364 });
0 commit comments