@@ -2373,23 +2373,20 @@ def finish_passes(self) -> None:
23732373 # We should always patch indirect dependencies, even in full (non-incremental) builds,
23742374 # because the cache still may be written, and it must be correct.
23752375 # TODO: find a more robust way to traverse *all* relevant types?
2376- expr_types = set (self .type_map ().values ())
2377- symbol_types = set ()
2376+ all_types = list (self .type_map ().values ())
23782377 for _ , sym , _ in self .tree .local_definitions ():
23792378 if sym .type is not None :
2380- symbol_types . add (sym .type )
2379+ all_types . append (sym .type )
23812380 if isinstance (sym .node , TypeInfo ):
23822381 # TypeInfo symbols have some extra relevant types.
2383- symbol_types . update (sym .node .bases )
2382+ all_types . extend (sym .node .bases )
23842383 if sym .node .metaclass_type :
2385- symbol_types . add (sym .node .metaclass_type )
2384+ all_types . append (sym .node .metaclass_type )
23862385 if sym .node .typeddict_type :
2387- symbol_types . add (sym .node .typeddict_type )
2386+ all_types . append (sym .node .typeddict_type )
23882387 if sym .node .tuple_type :
2389- symbol_types .add (sym .node .tuple_type )
2390- self ._patch_indirect_dependencies (
2391- self .type_checker ().module_refs , expr_types | symbol_types
2392- )
2388+ all_types .append (sym .node .tuple_type )
2389+ self ._patch_indirect_dependencies (self .type_checker ().module_refs , all_types )
23932390
23942391 if self .options .dump_inference_stats :
23952392 dump_type_stats (
@@ -2418,7 +2415,7 @@ def free_state(self) -> None:
24182415 self ._type_checker .reset ()
24192416 self ._type_checker = None
24202417
2421- def _patch_indirect_dependencies (self , module_refs : set [str ], types : set [Type ]) -> None :
2418+ def _patch_indirect_dependencies (self , module_refs : set [str ], types : list [Type ]) -> None :
24222419 assert None not in types
24232420 valid = self .valid_references ()
24242421
0 commit comments