Fix reconfiguration on --wipe.
Closes #14279.
diff --git a/mesonbuild/options.py b/mesonbuild/options.py
index 7c22332..7ed2ec3 100644
--- a/mesonbuild/options.py
+++ b/mesonbuild/options.py
@@ -1305,7 +1305,7 @@
# A) a system option in which case the subproject is None
# B) a project option, in which case the subproject is '' (this method is only called from top level)
#
- # The key parsing fucntion can not handle the difference between the two
+ # The key parsing function can not handle the difference between the two
# and defaults to A.
assert isinstance(keystr, str)
key = OptionKey.from_string(keystr)
@@ -1350,8 +1350,7 @@
#
# Some base options (sanitizers etc) might get added later.
# Permitting them all is not strictly correct.
- assert isinstance(keystr, str)
- if ':' not in keystr and not self.is_compiler_option(key) and not self.is_base_option(key):
+ if key.subproject is None and not self.is_compiler_option(key) and not self.is_base_option(key):
raise MesonException(f'Unknown options: "{keystr}"')
self.pending_project_options[key] = valstr
else:
diff --git a/unittests/allplatformstests.py b/unittests/allplatformstests.py
index 865b5e3..634a860 100644
--- a/unittests/allplatformstests.py
+++ b/unittests/allplatformstests.py
@@ -5143,3 +5143,8 @@
testdir = os.path.join(self.unit_test_dir, '117 empty project')
args = ['-Db_ndebug=if_release']
self.init(testdir, extra_args=args)
+
+ def test_wipe_with_args(self):
+ testdir = os.path.join(self.common_test_dir, '1 trivial')
+ self.init(testdir, extra_args=['-Dc_args=-DSOMETHING'])
+ self.init(testdir, extra_args=['--wipe'])