aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-02-25 09:59:13 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2021-02-25 22:58:45 +0200
commitcef5cab23c6fb53e4ddf0d2460cb2258ef64f6d5 (patch)
tree840f2f5c0494996fd1ccfad2ff70df9532b053d0 /mesonbuild/interpreter.py
parent4e5efd3897c5bd03fbcd32fcf43c82879ca8caf4 (diff)
downloadmeson-cef5cab23c6fb53e4ddf0d2460cb2258ef64f6d5.zip
meson-cef5cab23c6fb53e4ddf0d2460cb2258ef64f6d5.tar.gz
meson-cef5cab23c6fb53e4ddf0d2460cb2258ef64f6d5.tar.bz2
Support multiple args in error()
Seems it got forgotten when that was added to warnings() and message(). Fixes: #8414.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py35
1 files changed, 12 insertions, 23 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 08c7424..d5a0a84 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -61,16 +61,16 @@ permitted_method_kwargs = {
'sources'},
}
-def stringifyUserArguments(args):
+def stringifyUserArguments(args, quote=False):
if isinstance(args, list):
- return '[%s]' % ', '.join([stringifyUserArguments(x) for x in args])
+ return '[%s]' % ', '.join([stringifyUserArguments(x, True) for x in args])
elif isinstance(args, dict):
- return '{%s}' % ', '.join(['%s : %s' % (stringifyUserArguments(k), stringifyUserArguments(v)) for k, v in args.items()])
+ return '{%s}' % ', '.join(['%s : %s' % (stringifyUserArguments(k, True), stringifyUserArguments(v, True)) for k, v in args.items()])
elif isinstance(args, int):
return str(args)
elif isinstance(args, str):
- return "'%s'" % args
- raise InvalidArguments('Function accepts only strings, integers, lists and lists thereof.')
+ return f"'{args}'" if quote else args
+ raise InvalidArguments('Function accepts only strings, integers, lists, dictionaries and lists thereof.')
class OverrideProgram(dependencies.ExternalProgram):
@@ -3276,26 +3276,12 @@ external dependencies (including libraries) must go to "dependencies".''')
success &= self.add_languages(args, required, MachineChoice.HOST)
return success
- def get_message_string_arg(self, arg):
- if isinstance(arg, list):
- argstr = stringifyUserArguments(arg)
- elif isinstance(arg, dict):
- argstr = stringifyUserArguments(arg)
- elif isinstance(arg, str):
- argstr = arg
- elif isinstance(arg, int):
- argstr = str(arg)
- else:
- raise InvalidArguments('Function accepts only strings, integers, lists and lists thereof.')
-
- return argstr
-
@noArgsFlattening
@noKwargs
def func_message(self, node, args, kwargs):
if len(args) > 1:
FeatureNew.single_use('message with more than one argument', '0.54.0', self.subproject)
- args_str = [self.get_message_string_arg(i) for i in args]
+ args_str = [stringifyUserArguments(i) for i in args]
self.message_impl(args_str)
def message_impl(self, args):
@@ -3357,13 +3343,16 @@ external dependencies (including libraries) must go to "dependencies".''')
def func_warning(self, node, args, kwargs):
if len(args) > 1:
FeatureNew.single_use('warning with more than one argument', '0.54.0', self.subproject)
- args_str = [self.get_message_string_arg(i) for i in args]
+ args_str = [stringifyUserArguments(i) for i in args]
mlog.warning(*args_str, location=node)
+ @noArgsFlattening
@noKwargs
def func_error(self, node, args, kwargs):
- self.validate_arguments(args, 1, [str])
- raise InterpreterException('Problem encountered: ' + args[0])
+ if len(args) > 1:
+ FeatureNew.single_use('error with more than one argument', '0.58.0', self.subproject)
+ args_str = [stringifyUserArguments(i) for i in args]
+ raise InterpreterException('Problem encountered: ' + ' '.join(args_str))
@noKwargs
@noPosargs