2
2
3
3
from mypy .nodes import (
4
4
MypyFile , TypeInfo , FuncDef , ClassDef , Decorator , OverloadedFuncDef , MemberExpr , Var ,
5
- Expression , ARG_STAR , ARG_STAR2
5
+ Expression , SymbolNode , ARG_STAR , ARG_STAR2
6
6
)
7
7
from mypy .types import Type
8
8
from mypy .build import Graph
@@ -63,13 +63,17 @@ def build_type_map(mapper: Mapper,
63
63
# TODO: what else?
64
64
65
65
66
+ def is_from_module (node : SymbolNode , module : MypyFile ) -> bool :
67
+ return node .fullname == module .fullname + '.' + node .name
68
+
69
+
66
70
def load_type_map (mapper : 'Mapper' ,
67
71
modules : List [MypyFile ],
68
72
deser_ctx : DeserMaps ) -> None :
69
73
"""Populate a Mapper with deserialized IR from a list of modules."""
70
74
for module in modules :
71
75
for name , node in module .names .items ():
72
- if isinstance (node .node , TypeInfo ):
76
+ if isinstance (node .node , TypeInfo ) and is_from_module ( node . node , module ) :
73
77
ir = deser_ctx .classes [node .node .fullname ]
74
78
mapper .type_to_ir [node .node ] = ir
75
79
mapper .func_to_decl [node .node ] = ir .ctor
@@ -86,7 +90,7 @@ def get_module_func_defs(module: MypyFile) -> Iterable[FuncDef]:
86
90
# aliases. The best way to do this seems to be by
87
91
# checking that the fullname matches.
88
92
if (isinstance (node .node , (FuncDef , Decorator , OverloadedFuncDef ))
89
- and node .fullname == module . fullname + '.' + name ):
93
+ and is_from_module ( node .node , module ) ):
90
94
yield get_func_def (node .node )
91
95
92
96
0 commit comments