Skip to content

Commit ffa65a4

Browse files
authored
New semantic analyzer: store import deps generated during analysis (#6582)
Previously some module dependencies genererated from `from m import *` went missing, and this could result in crashes when deserialization, since the target module wasn't serialized yet. This fixes one incremental mode test case.
1 parent dfcce2b commit ffa65a4

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

mypy/newsemanal/semanal_main.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from mypy.errors import Errors
4242
from mypy.newsemanal.semanal_infer import infer_decorator_signature_if_simple
4343
from mypy.checker import FineGrainedDeferredNode
44+
import mypy.build
4445

4546
MYPY = False
4647
if MYPY:
@@ -278,6 +279,11 @@ def semantic_analyze_target(target: str,
278279
analyzer.refresh_partial(refresh_node, patches, final_iteration)
279280
if isinstance(node, Decorator):
280281
infer_decorator_signature_if_simple(node, analyzer)
282+
for dep in analyzer.imports:
283+
state.dependencies.append(dep)
284+
priority = mypy.build.PRI_LOW
285+
if priority <= state.priorities.get(dep, priority):
286+
state.priorities[dep] = priority
281287
if analyzer.deferred:
282288
return [target], analyzer.incomplete, analyzer.progress
283289
else:

test-data/unit/check-newsemanal.test

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2020,3 +2020,18 @@ class C(Generic[T]): ...
20202020

20212021
class A: ...
20222022
class D: ...
2023+
2024+
[case testNewAnalyzerAddedSubStarImport_incremental]
2025+
# TODO: This can be removed once testAddedSubStarImport is enabled in check-incremental.test.
2026+
# cmd: mypy -m a pack pack.mod b
2027+
# cmd2: mypy -m other
2028+
[file a.py]
2029+
from pack import *
2030+
[file pack/__init__.py]
2031+
[file pack/mod.py]
2032+
[file b.py]
2033+
import pack.mod
2034+
[file other.py]
2035+
import a
2036+
[out]
2037+
[out2]

0 commit comments

Comments
 (0)