diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2023-10-04 13:07:25 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2023-10-16 13:28:32 -0700 |
commit | 6599c32fd3f1128bb0dfdc7acb3162510791c61b (patch) | |
tree | b91fe93e736806774b11d142bd752bd7c45959ff | |
parent | b2f681c92a3efb0bb77cf75ba5146c13cf54b2b5 (diff) | |
download | meson-6599c32fd3f1128bb0dfdc7acb3162510791c61b.zip meson-6599c32fd3f1128bb0dfdc7acb3162510791c61b.tar.gz meson-6599c32fd3f1128bb0dfdc7acb3162510791c61b.tar.bz2 |
compilers/d: remove duplicate method from subclass
The DCompiler and DmDLikeCompiler classes both implement the exact same
`get_feature_args()` method. The DmdLikeCompiler inherits the DCompiler.
As such, removing it doesn't change the behavior of anything, but
decreases the chances of bugs being introduced, as well as LoC.
-rw-r--r-- | mesonbuild/compilers/d.py | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index 08ebb75..8b35f02 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -170,94 +170,6 @@ class DmdLikeCompilerMixin(CompilerMixinBase): return [] return ['-fPIC'] - def get_feature_args(self, kwargs: T.Dict[str, T.Any], build_to_src: str) -> T.List[str]: - # TODO: using a TypeDict here would improve this - res: T.List[str] = [] - # get_feature_args can be called multiple times for the same target when there is generated source - # so we have to copy the kwargs (target.d_features) dict before popping from it - kwargs = kwargs.copy() - if 'unittest' in kwargs: - unittest = kwargs.pop('unittest') - unittest_arg = d_feature_args[self.id]['unittest'] - if not unittest_arg: - raise EnvironmentException('D compiler %s does not support the "unittest" feature.' % self.name_string()) - if unittest: - res.append(unittest_arg) - - if 'debug' in kwargs: - debug_level = -1 - debugs = kwargs.pop('debug') - if not isinstance(debugs, list): - debugs = [debugs] - - debug_arg = d_feature_args[self.id]['debug'] - if not debug_arg: - raise EnvironmentException('D compiler %s does not support conditional debug identifiers.' % self.name_string()) - - # Parse all debug identifiers and the largest debug level identifier - for d in debugs: - if isinstance(d, int): - if d > debug_level: - debug_level = d - elif isinstance(d, str) and d.isdigit(): - if int(d) > debug_level: - debug_level = int(d) - else: - res.append(f'{debug_arg}={d}') - - if debug_level >= 0: - res.append(f'{debug_arg}={debug_level}') - - if 'versions' in kwargs: - version_level = -1 - versions = kwargs.pop('versions') - if not isinstance(versions, list): - versions = [versions] - - version_arg = d_feature_args[self.id]['version'] - if not version_arg: - raise EnvironmentException('D compiler %s does not support conditional version identifiers.' % self.name_string()) - - # Parse all version identifiers and the largest version level identifier - for v in versions: - if isinstance(v, int): - if v > version_level: - version_level = v - elif isinstance(v, str) and v.isdigit(): - if int(v) > version_level: - version_level = int(v) - else: - res.append(f'{version_arg}={v}') - - if version_level >= 0: - res.append(f'{version_arg}={version_level}') - - if 'import_dirs' in kwargs: - import_dirs = kwargs.pop('import_dirs') - if not isinstance(import_dirs, list): - import_dirs = [import_dirs] - - import_dir_arg = d_feature_args[self.id]['import_dir'] - if not import_dir_arg: - raise EnvironmentException('D compiler %s does not support the "string import directories" feature.' % self.name_string()) - for idir_obj in import_dirs: - basedir = idir_obj.get_curdir() - for idir in idir_obj.get_incdirs(): - bldtreedir = os.path.join(basedir, idir) - # Avoid superfluous '/.' at the end of paths when d is '.' - if idir not in ('', '.'): - expdir = bldtreedir - else: - expdir = basedir - srctreedir = os.path.join(build_to_src, expdir) - res.append(f'{import_dir_arg}{srctreedir}') - res.append(f'{import_dir_arg}{bldtreedir}') - - if kwargs: - raise EnvironmentException('Unknown D compiler feature(s) selected: %s' % ', '.join(kwargs.keys())) - - return res - def get_buildtype_linker_args(self, buildtype: str) -> T.List[str]: if buildtype != 'plain': return self._get_target_arch_args() |