@@ -77,9 +77,9 @@ def visit_symbol_table(self, symtab: SymbolTable) -> None:
77
77
value .node = self .modules [cross_ref ]
78
78
else :
79
79
stnode = lookup_qualified_stnode (self .modules , cross_ref )
80
- assert stnode is not None , "Could not find cross-ref %s" % ( cross_ref ,)
81
- value .node = stnode .node
82
- value .type_override = stnode .type_override
80
+ if stnode is not None :
81
+ value .node = stnode .node
82
+ value .type_override = stnode .type_override
83
83
else :
84
84
if isinstance (value .node , TypeInfo ):
85
85
# TypeInfo has no accept(). TODO: Add it?
@@ -238,21 +238,24 @@ def lookup_qualified(modules: Dict[str, MypyFile], name: str) -> SymbolNode:
238
238
return stnode .node
239
239
240
240
241
- def lookup_qualified_stnode (modules : Dict [str , MypyFile ], name : str ) -> SymbolTableNode :
241
+ def lookup_qualified_stnode (modules : Dict [str , MypyFile ], name : str ) -> Optional [ SymbolTableNode ] :
242
242
head = name
243
243
rest = []
244
244
while True :
245
- assert '.' in head , "Cannot find %s" % (name ,)
245
+ if '.' not in head :
246
+ return None
246
247
head , tail = head .rsplit ('.' , 1 )
247
248
rest .append (tail )
248
249
mod = modules .get (head )
249
250
if mod is not None :
250
251
break
251
252
names = mod .names
252
253
while True :
253
- assert rest , "Cannot find %s" % (name ,)
254
+ if not rest :
255
+ return None
254
256
key = rest .pop ()
255
- assert key in names , "Cannot find %s for %s" % (key , name )
257
+ if key not in names :
258
+ return None
256
259
stnode = names [key ]
257
260
if not rest :
258
261
return stnode
0 commit comments