From a5c4cf3a3f74262994dffcc1238843882b13cf8f Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Fri, 6 Aug 2021 14:50:46 -0700 Subject: mesonlib: Fix type annotations get_compiler_for_source and classify_unity_sources are both wrong, in that they expect to be given a seqence of strings, but they really should take a `Sequence[str | File]`. Additionally, they're using `CompilerType`, which we don't need anymore, and should stop using, most methods for the Compiler are actually defined in the base compiler class. --- mesonbuild/mesonlib/universal.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mesonbuild/mesonlib/universal.py b/mesonbuild/mesonlib/universal.py index 65d21eee1..54d6c3745 100644 --- a/mesonbuild/mesonlib/universal.py +++ b/mesonbuild/mesonlib/universal.py @@ -35,8 +35,7 @@ if T.TYPE_CHECKING: from .._typing import ImmutableListProtocol from ..build import ConfigurationData from ..coredata import KeyedOptionDictType, UserOption - from ..compilers.compilers import CompilerType - from ..interpreterbase import ObjectHolder + from ..compilers.compilers import Compiler FileOrString = T.Union['File', str] @@ -453,7 +452,7 @@ class File(HoldableObject): return os.path.join(self.subdir, self.fname) -def get_compiler_for_source(compilers: T.Iterable['CompilerType'], src: str) -> 'CompilerType': +def get_compiler_for_source(compilers: T.Iterable['Compiler'], src: 'FileOrString') -> 'Compiler': """Given a set of compilers and a source, find the compiler for that source type.""" for comp in compilers: if comp.can_compile(src): @@ -461,8 +460,8 @@ def get_compiler_for_source(compilers: T.Iterable['CompilerType'], src: str) -> raise MesonException(f'No specified compiler can handle file {src!s}') -def classify_unity_sources(compilers: T.Iterable['CompilerType'], sources: T.Iterable[str]) -> T.Dict['CompilerType', T.List[str]]: - compsrclist = {} # type: T.Dict[CompilerType, T.List[str]] +def classify_unity_sources(compilers: T.Iterable['Compiler'], sources: T.Sequence['FileOrString']) -> T.Dict['Compiler', T.List['FileOrString']]: + compsrclist: T.Dict['Compiler', T.List['FileOrString']] = {} for src in sources: comp = get_compiler_for_source(compilers, src) if comp not in compsrclist: -- cgit v1.2.3