From 4c149545d679c0edb76be66d453a460bdc110911 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Mon, 25 Oct 2021 09:43:25 -0400 Subject: [PATCH] message: Allow bool It has always been working even if not documented and there is no reason to not accept it. However, change "True/False" to "true/false" to be consistent with meson language. Fixes: #9436 --- docs/yaml/functions/message.yaml | 6 +++--- mesonbuild/interpreter/interpreter.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/yaml/functions/message.yaml b/docs/yaml/functions/message.yaml index d4ab085a820c..7ced8495d782 100644 --- a/docs/yaml/functions/message.yaml +++ b/docs/yaml/functions/message.yaml @@ -4,11 +4,11 @@ description: This function prints its argument to stdout. posargs: text: - type: str - description: The message to print + type: str | int | bool | list[str | int | bool] | dict[str | int | bool] + description: The message to print. Before *0.54.0* only strings was accepted. varargs: name: more_text since: 0.54.0 - type: str + type: str | int | bool | list[str | int | bool] | dict[str | int | bool] description: Additional text that will be printed separated by spaces. diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index bbe89fa3f34b..fd00e708166f 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -103,12 +103,12 @@ def stringifyUserArguments(args, quote=False): elif isinstance(args, dict): return '{%s}' % ', '.join(['{} : {}'.format(stringifyUserArguments(k, True), stringifyUserArguments(v, True)) for k, v in args.items()]) elif isinstance(args, bool): - pass # bools are a type of int, make this fallthrough to the error case + return 'true' if args else 'false' elif isinstance(args, int): return str(args) elif isinstance(args, str): return f"'{args}'" if quote else args - raise InvalidArguments('Function accepts only strings, integers, lists, dictionaries and lists thereof.') + raise InvalidArguments('Function accepts only strings, integers, bools, lists, dictionaries and lists thereof.') class Summary: def __init__(self, project_name, project_version):