diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-04-11 17:12:49 +0200 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2020-04-11 18:58:26 -0400 |
commit | 03b86cdbed3cec9f60d3a683bcbde16c0a96ec1b (patch) | |
tree | 303ae82b8fb63d26843a8ca1ed3aeee1ec82f6d9 /mesonbuild/optinterpreter.py | |
parent | a54506fe46da7e5a1a4760a4e4eebda262bf585e (diff) | |
download | meson-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.py | 10 |
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.') |