aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/optinterpreter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2020-04-11 17:12:49 +0200
committerXavier Claessens <xclaesse@gmail.com>2020-04-11 18:58:26 -0400
commit03b86cdbed3cec9f60d3a683bcbde16c0a96ec1b (patch)
tree303ae82b8fb63d26843a8ca1ed3aeee1ec82f6d9 /mesonbuild/optinterpreter.py
parenta54506fe46da7e5a1a4760a4e4eebda262bf585e (diff)
downloadmeson-03b86cdbed3cec9f60d3a683bcbde16c0a96ec1b.zip
meson-03b86cdbed3cec9f60d3a683bcbde16c0a96ec1b.tar.gz
meson-03b86cdbed3cec9f60d3a683bcbde16c0a96ec1b.tar.bz2
opts: Allow `-` and `not` in meson_options.txt (fixes #6948)
Diffstat (limited to 'mesonbuild/optinterpreter.py')
-rw-r--r--mesonbuild/optinterpreter.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py
index 2695a26..c13cc5d 100644
--- a/mesonbuild/optinterpreter.py
+++ b/mesonbuild/optinterpreter.py
@@ -166,6 +166,16 @@ class OptionInterpreter:
return arg.value
elif isinstance(arg, mparser.ArrayNode):
return [self.reduce_single(curarg) for curarg in arg.args.arguments]
+ elif isinstance(arg, mparser.UMinusNode):
+ res = self.reduce_single(arg.value)
+ if not isinstance(res, (int, float)):
+ raise OptionException('Token after "-" is not a number')
+ return -res
+ elif isinstance(arg, mparser.NotNode):
+ res = self.reduce_single(arg.value)
+ if not isinstance(res, bool):
+ raise OptionException('Token after "not" is not a a boolean')
+ return not res
else:
raise OptionException('Arguments may only be string, int, bool, or array of those.')