@@ -718,7 +718,7 @@ def refresh_top_level(self, file_node: MypyFile) -> None:
718718 self .recurse_into_functions = False
719719 self .add_implicit_module_attrs (file_node )
720720 for d in file_node .defs :
721- self .accept (d )
721+ self .accept_delaying_errors (d )
722722 if file_node .fullname == "typing" :
723723 self .add_builtin_aliases (file_node )
724724 if file_node .fullname == "typing_extensions" :
@@ -5385,7 +5385,7 @@ def visit_block(self, b: Block) -> None:
53855385 return
53865386 self .block_depth [- 1 ] += 1
53875387 for s in b .body :
5388- self .accept (s )
5388+ self .accept_delaying_errors (s )
53895389 self .block_depth [- 1 ] -= 1
53905390
53915391 def visit_block_maybe (self , b : Block | None ) -> None :
@@ -7579,26 +7579,27 @@ def incomplete_feature_enabled(self, feature: str, ctx: Context) -> bool:
75797579 return False
75807580 return True
75817581
7582- def accept (self , node : Node ) -> None :
7582+ def accept_delaying_errors (self , node : Node ) -> None :
75837583 should_filter = isinstance (node , Statement ) and not self .options .semantic_analysis_only
75847584 if should_filter :
75857585 filter_errors : bool | Callable [[str , ErrorInfo ], bool ] = lambda _ , e : not e .blocker
75867586 else :
75877587 filter_errors = False
75887588 with self .msg .filter_errors (filter_errors = filter_errors , save_filtered_errors = True ) as msg :
7589- try :
7590- node .accept (self )
7591- except Exception as err :
7592- report_internal_error (err , self .errors .file , node .line , self .errors , self .options )
7589+ self .accept (node )
75937590
75947591 errors = msg .filtered_errors ()
75957592 if errors :
7596- # since nodes aren 't hashable , carry things through values
7593+ # since nodes don 't implement hash() , carry things through values
75977594 assign_to = (self .cur_mod_id , node .line , node .column )
75987595 self .delayed_errors .setdefault (assign_to , [])
75997596 self .delayed_errors [assign_to ].extend (errors )
76007597
7601- # print(node, [e.message for e in self.delayed_errors[node]])
7598+ def accept (self , node : Node ) -> None :
7599+ try :
7600+ node .accept (self )
7601+ except Exception as err :
7602+ report_internal_error (err , self .errors .file , node .line , self .errors , self .options )
76027603
76037604 def expr_to_analyzed_type (
76047605 self ,
0 commit comments