From cd4b4460781fcee0b7323dec5c487854c8405da9 Mon Sep 17 00:00:00 2001 From: Charlie Denton Date: Thu, 20 Jul 2023 15:24:52 +0100 Subject: [PATCH] Fix disappearing errors when re-running dmypy check This which fixes issue https://github.com/python/mypy/issues/9655 wherein some types of error would be lost when a file was re-processed by dmypy. This also fixes another error where sometimes files would not be re-processed by dmypy if the only error in the file was either "unused type ignore" or "ignore without code". --- mypy/errors.py | 4 ++++ mypy/server/update.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/mypy/errors.py b/mypy/errors.py index eabe96a2dc73..f67087953887 100644 --- a/mypy/errors.py +++ b/mypy/errors.py @@ -725,6 +725,8 @@ def generate_unused_ignore_errors(self, file: str) -> None: blocker=False, only_once=False, allow_dups=False, + origin=(self.file, [line]), + target=self.target_module, ) self._add_error_info(file, info) @@ -777,6 +779,8 @@ def generate_ignore_without_code_errors( blocker=False, only_once=False, allow_dups=False, + origin=(self.file, [line]), + target=self.target_module, ) self._add_error_info(file, info) diff --git a/mypy/server/update.py b/mypy/server/update.py index 0cc7a2229514..0371d5d40266 100644 --- a/mypy/server/update.py +++ b/mypy/server/update.py @@ -667,6 +667,8 @@ def restore(ids: list[str]) -> None: state.type_check_first_pass() state.type_check_second_pass() state.detect_possibly_undefined_vars() + state.generate_unused_ignore_notes() + state.generate_ignore_without_code_notes() t2 = time.time() state.finish_passes() t3 = time.time() @@ -1028,6 +1030,10 @@ def key(node: FineGrainedDeferredNode) -> int: if graph[module_id].type_checker().check_second_pass(): more = True + graph[module_id].detect_possibly_undefined_vars() + graph[module_id].generate_unused_ignore_notes() + graph[module_id].generate_ignore_without_code_notes() + if manager.options.export_types: manager.all_types.update(graph[module_id].type_map())