From c00e17b35a08d77f52f7a209ceec5576279dae33 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Thu, 5 Dec 2019 10:05:28 -0800 Subject: [PATCH] Partially revert "lgtm: fix Missing call to __init__ during object initialization" This partially reverts commit fe853ee516e1e7b392753a6e8f1f0b9cad6fb54f. In particular this reverts the changes to the DynamicLinker __init__ methods. Frankly this is *bad* because it allows a mixin class (which should not be directly instantiated) to be directly instantiated, and complicates the init process. It also increases the amount of code for zero gain, and makes the code less resilient to refactors. --- mesonbuild/linkers.py | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/mesonbuild/linkers.py b/mesonbuild/linkers.py index 28b964e18..41dd92934 100644 --- a/mesonbuild/linkers.py +++ b/mesonbuild/linkers.py @@ -137,7 +137,7 @@ class IntelVisualStudioLinker(VisualStudioLikeLinker, StaticLinker): class ArLinker(StaticLinker): def __init__(self, exelist: typing.List[str]): - StaticLinker.__init__(self, exelist) + super().__init__(exelist) self.id = 'ar' pc, stdo = mesonlib.Popen_safe(self.exelist + ['-h'])[0:2] # Enable deterministic builds if they are available. @@ -167,7 +167,7 @@ class ArmarLinker(ArLinker): # lgtm [py/missing-call-to-init] class DLinker(StaticLinker): def __init__(self, exelist: typing.List[str], arch: str): - StaticLinker.__init__(self, exelist) + super().__init__(exelist) self.id = exelist[0] self.arch = arch @@ -190,7 +190,7 @@ class DLinker(StaticLinker): class CcrxLinker(StaticLinker): def __init__(self, exelist: typing.List[str]): - StaticLinker.__init__(self, exelist) + super().__init__(exelist) self.id = 'rlink' def can_linker_accept_rsp(self) -> bool: @@ -682,8 +682,8 @@ class CcrxDynamicLinker(DynamicLinker): def __init__(self, for_machine: mesonlib.MachineChoice, *, version: str = 'unknown version'): - DynamicLinker.__init__(self, ['rlink.exe'], for_machine, 'rlink', '', - version=version) + super().__init__(['rlink.exe'], for_machine, 'rlink', '', + version=version) def get_accepts_rsp(self) -> bool: return False @@ -715,8 +715,8 @@ class ArmDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): def __init__(self, for_machine: mesonlib.MachineChoice, *, version: str = 'unknown version'): - DynamicLinker.__init__(self, ['armlink'], for_machine, 'armlink', '', - version=version) + super().__init__(['armlink'], for_machine, 'armlink', '', + version=version) def get_accepts_rsp(self) -> bool: return False @@ -773,7 +773,7 @@ class PGIDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): class PGIStaticLinker(StaticLinker): def __init__(self, exelist: typing.List[str]): - StaticLinker.__init__(self, exelist) + super().__init__(exelist) self.id = 'ar' self.std_args = ['-r'] @@ -796,7 +796,8 @@ class VisualStudioLikeLinkerMixin: 'custom': [], } # type: typing.Dict[str, typing.List[str]] - def __init__(self, direct: bool = True, machine: str = 'x86'): + def __init__(self, *args, direct: bool = True, machine: str = 'x86', **kwargs): + super().__init__(*args, **kwargs) self.direct = direct self.machine = machine @@ -856,9 +857,8 @@ class MSVCDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker): exelist: typing.Optional[typing.List[str]] = None, prefix: typing.Union[str, typing.List[str]] = '', machine: str = 'x86', version: str = 'unknown version'): - VisualStudioLikeLinkerMixin.__init__(self, machine=machine) - DynamicLinker.__init__(self, exelist or ['link.exe'], for_machine, 'link', - prefix, version=version) + super().__init__(exelist or ['link.exe'], for_machine, 'link', + prefix, machine=machine, version=version) class ClangClDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker): @@ -869,9 +869,8 @@ class ClangClDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker): exelist: typing.Optional[typing.List[str]] = None, prefix: typing.Union[str, typing.List[str]] = '', version: str = 'unknown version'): - VisualStudioLikeLinkerMixin.__init__(self) - DynamicLinker.__init__(self, exelist or ['lld-link.exe'], for_machine, - 'lld-link', prefix, version=version) + super().__init__(exelist or ['lld-link.exe'], for_machine, + 'lld-link', prefix, version=version) class XilinkDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker): @@ -880,8 +879,7 @@ class XilinkDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker): def __init__(self, for_machine: mesonlib.MachineChoice, *, version: str = 'unknown version'): - VisualStudioLikeLinkerMixin.__init__(self) - DynamicLinker.__init__(self, ['xilink.exe'], for_machine, 'xilink', '', version=version) + super().__init__(['xilink.exe'], for_machine, 'xilink', '', version=version) class SolarisDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): @@ -938,8 +936,7 @@ class OptlinkDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker): *, version: str = 'unknown version'): # Use optlink instead of link so we don't interfer with other link.exe # implementations. - VisualStudioLikeLinkerMixin.__init__(self) - DynamicLinker.__init__(self, ['optlink.exe'], for_machine, 'optlink', prefix_arg='', version=version) + super().__init__(['optlink.exe'], for_machine, 'optlink', prefix_arg='', version=version) def get_allow_undefined_args(self) -> typing.List[str]: return []