aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/ast/printer.py7
-rw-r--r--mesonbuild/interpreter.py20
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):