Skip to content

Commit edbd57b

Browse files
committed
Only opt into delayed erors for the most important semanal points
1 parent 64ba2a4 commit edbd57b

1 file changed

Lines changed: 10 additions & 9 deletions

File tree

mypy/semanal.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)