This change explicitly enable tracking negated options in the option parser. A negated option is one passed with a -no
prefix. For example, -nofoo
is the negated form of -foo
. Negated options were originally added in the 0.6 release.
The change here allows code to explicitly distinguish between cases like -nofoo
and -foo=0
, which was not possible previously. The option parser does not have any changed semantics as a result of this change, and existing code will parse options just as it did before.
The motivation for this change is to provide a way to disable options that are otherwise not boolean options. For example, the -debuglogfile
option is normally interpreted as a string, where the value is the log file name. With this change a user can pass in -nodebuglogfile
and the code can see that it was explicitly negated, and use that to disable the log file.
This change originally split out from #12689.