From 521ce883ad3c4e0a32fabea92b330012d71a719a Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Sat, 31 Mar 2018 22:39:42 -0400 Subject: [PATCH] has_argument(): reduce code duplication --- mesonbuild/compilers/compilers.py | 10 ---------- mesonbuild/interpreter.py | 29 ++++++++--------------------- 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 99e916488..4ed7a7972 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -745,21 +745,11 @@ class Compiler: def get_library_dirs(self): return [] - def has_argument(self, arg, env): - return self.has_multi_arguments([arg], env) - def has_multi_arguments(self, args, env): raise EnvironmentException( 'Language {} does not support has_multi_arguments.'.format( self.get_display_language())) - def get_supported_arguments(self, args, env): - supported_args = [] - for arg in args: - if self.has_argument(arg, env): - supported_args.append(arg) - return supported_args - def get_cross_extra_flags(self, environment, link): extra_flags = [] if self.is_cross and environment: diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index a1303122c..1c71409f9 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1183,14 +1183,8 @@ class CompilerHolder(InterpreterObject): def has_argument_method(self, args, kwargs): args = mesonlib.stringlistify(args) if len(args) != 1: - raise InterpreterException('Has_arg takes exactly one argument.') - result = self.compiler.has_argument(args[0], self.environment) - if result: - h = mlog.green('YES') - else: - h = mlog.red('NO') - mlog.log('Compiler for {} supports argument {}:'.format(self.compiler.get_display_language(), args[0]), h) - return result + raise InterpreterException('has_argument takes exactly one argument.') + return self.has_multi_arguments_method(args, kwargs) @permittedMethodKwargs({}) def has_multi_arguments_method(self, args, kwargs): @@ -1209,23 +1203,16 @@ class CompilerHolder(InterpreterObject): @permittedMethodKwargs({}) def get_supported_arguments_method(self, args, kwargs): args = mesonlib.stringlistify(args) - result = self.compiler.get_supported_arguments(args, self.environment) - if len(result) == len(args): - h = mlog.green('YES') - elif len(result) > 0: - h = mlog.yellow('SOME') - else: - h = mlog.red('NO') - mlog.log( - 'Compiler for {} supports arguments {}:'.format( - self.compiler.get_display_language(), ' '.join(args)), - h) - return result + supported_args = [] + for arg in args: + if self.has_argument_method(arg, kwargs): + supported_args.append(arg) + return supported_args @permittedMethodKwargs({}) def first_supported_argument_method(self, args, kwargs): for i in mesonlib.stringlistify(args): - if self.compiler.has_argument(i, self.environment): + if self.has_argument_method(i, kwargs): mlog.log('First supported argument:', mlog.bold(i)) return [i] mlog.log('First supported argument:', mlog.red('None'))