diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2019-12-04 12:31:18 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-12-10 18:02:41 +0200 |
commit | 552e78da4d1837699cc706e59078046ce4a1a2a5 (patch) | |
tree | 150aac4c6aa9d601a1b357b8a9e15d3b815967df /mesonbuild | |
parent | 9c72d0fdb287f1838c68915e469b6db455f59a7e (diff) | |
download | meson-552e78da4d1837699cc706e59078046ce4a1a2a5.zip meson-552e78da4d1837699cc706e59078046ce4a1a2a5.tar.gz meson-552e78da4d1837699cc706e59078046ce4a1a2a5.tar.bz2 |
assert(): Make message argument optional
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/ast/printer.py | 7 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 20 |
2 files changed, 20 insertions, 7 deletions
diff --git a/mesonbuild/ast/printer.py b/mesonbuild/ast/printer.py index c6fb91a..f245a36 100644 --- a/mesonbuild/ast/printer.py +++ b/mesonbuild/ast/printer.py @@ -100,7 +100,7 @@ class AstPrinter(AstVisitor): def visit_ComparisonNode(self, node: mparser.ComparisonNode): node.left.accept(self) - self.append_padded(mparser.comparison_map[node.ctype], node) + self.append_padded(node.ctype, node) node.right.accept(self) def visit_ArithmeticNode(self, node: mparser.ArithmeticNode): @@ -192,7 +192,10 @@ class AstPrinter(AstVisitor): if break_args: self.newline() for key, val in node.kwargs.items(): - self.append(key, node) + if isinstance(key, str): + self.append(key, node) + else: + key.accept(self) self.append_padded(':', node) val.accept(self) self.append(', ', node) diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 024266e..d7f826c 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2366,14 +2366,24 @@ external dependencies (including libraries) must go to "dependencies".''') @noKwargs def func_assert(self, node, args, kwargs): - if len(args) != 2: - raise InterpreterException('Assert takes exactly two arguments') - value, message = args + if len(args) == 1: + FeatureNew('assert function without message argument', '0.53.0').use(self.subproject) + value = args[0] + message = None + elif len(args) == 2: + value, message = args + if not isinstance(message, str): + raise InterpreterException('Assert message not a string.') + else: + raise InterpreterException('Assert takes between one and two arguments') if not isinstance(value, bool): raise InterpreterException('Assert value not bool.') - if not isinstance(message, str): - raise InterpreterException('Assert message not a string.') if not value: + if message is None: + from .ast import AstPrinter + printer = AstPrinter() + node.args.arguments[0].accept(printer) + message = printer.result raise InterpreterException('Assert failed: ' + message) def validate_arguments(self, args, argcount, arg_types): |