summaryrefslogtreecommitdiffstats
path: root/Source/cmArgumentParser.h
diff options
context:
space:
mode:
authorMatthew Woehlke <matthew.woehlke@kitware.com>2022-08-17 15:03:51 (GMT)
committerMatthew Woehlke <matthew.woehlke@kitware.com>2022-08-17 15:03:51 (GMT)
commitf2ef60ca547df10eb7e9b3ecf712ad2246d9c008 (patch)
treeca87c3bf28904355412f154b27ae4385cc4399fd /Source/cmArgumentParser.h
parent5b949bbb9114379120c29134b5effd77e39dd134 (diff)
downloadCMake-f2ef60ca547df10eb7e9b3ecf712ad2246d9c008.zip
CMake-f2ef60ca547df10eb7e9b3ecf712ad2246d9c008.tar.gz
CMake-f2ef60ca547df10eb7e9b3ecf712ad2246d9c008.tar.bz2
cmArgumentParser: Ignore positional after keyword
Tweak cmArgumentParser to ignore positional arguments once a keyword argument has been seen. This prevents mingling of keyword arguments being able to effectively skip positional arguments, with later arguments being picked up again; this seems highly likely to lead to user confusion. This is also consistent with how other languages (e.g. Python) handle a mix of "named" and positional arguments.
Diffstat (limited to 'Source/cmArgumentParser.h')
-rw-r--r--Source/cmArgumentParser.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/Source/cmArgumentParser.h b/Source/cmArgumentParser.h
index ac78872..fdf54fb 100644
--- a/Source/cmArgumentParser.h
+++ b/Source/cmArgumentParser.h
@@ -206,6 +206,7 @@ private:
std::size_t KeywordValuesSeen = 0;
std::size_t KeywordValuesExpected = 0;
std::function<Continue(cm::string_view)> KeywordValueFunc;
+ bool DoneWithPositional = false;
void Consume(std::size_t pos, cm::string_view arg);
void FinishKeyword();