From d9c29490e3187f0d6d3bf588edc6f2dd8fe3314a Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Wed, 10 Jun 2026 13:46:06 +0100 Subject: [PATCH] Support --shadow-file with --native-parser --- mypy/build.py | 4 +++- test-data/unit/cmdline.test | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/mypy/build.py b/mypy/build.py index 97db8fe1646cd..7fc9526ccb2fe 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -1030,7 +1030,9 @@ def parse_all(self, states: list[State], post_parse: bool = True) -> None: parallel_states = [] for state in states: - if not self.fscache.exists(state.xpath, real_only=True): + if not self.fscache.exists(state.xpath, real_only=True) or ( + self.shadow_map and self.maybe_swap_for_shadow_path(state.xpath) != state.xpath + ): state.source = state.get_source() if state.tree is not None: # The file was already parsed. diff --git a/test-data/unit/cmdline.test b/test-data/unit/cmdline.test index cfba7a81e9285..60b42d115284f 100644 --- a/test-data/unit/cmdline.test +++ b/test-data/unit/cmdline.test @@ -530,6 +530,35 @@ variable has type "bytes") b: bytes = 1 ^ +[case testShadowFileWithNativeParser] +# cmd: mypy --native-parser --shadow-file source.py shadow.py source.py +[file source.py] +x: int = 1 +reveal_type(x) +[file shadow.py] +x: str = "y" +reveal_type(x) +[out] +source.py:2: note: Revealed type is "str" +== Return code: 0 + +[case testShadowFileWithNativeParserParallel] +# cmd: mypy --native-parser --shadow-file a.py a_shadow.py main.py a.py b.py +[file main.py] +import a +import b +[file a.py] +x: int = 1 +reveal_type(x) +[file b.py] +y: int = 2 +[file a_shadow.py] +x: str = "y" +reveal_type(x) +[out] +a.py:2: note: Revealed type is "str" +== Return code: 0 + [case testConfigWarnUnusedSection1] # cmd: mypy foo.py quux.py spam/eggs.py [file mypy.ini]