File tree 2 files changed +22
-0
lines changed
2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -1568,6 +1568,9 @@ def dereference_module_cross_ref(
1568
1568
# nothing).
1569
1569
while node and isinstance (node .node , ImportedName ):
1570
1570
fullname = node .node .fullname ()
1571
+ if fullname in self .modules :
1572
+ # This is a module reference.
1573
+ return SymbolTableNode (MODULE_REF , self .modules [fullname ])
1571
1574
if fullname in seen :
1572
1575
# Looks like a reference cycle. Just break it.
1573
1576
# TODO: Generate a more specific error message.
Original file line number Diff line number Diff line change @@ -2152,3 +2152,22 @@ class Two:
2152
2152
pass
2153
2153
[out]
2154
2154
tmp/m/two.py:3: error: Revealed type is 'Union[builtins.int, builtins.str]'
2155
+
2156
+ [case testImportCycleSpecialCase]
2157
+ import p
2158
+ [file p/__init__.py]
2159
+ from . import a
2160
+ from . import b
2161
+ reveal_type(a.foo())
2162
+ [file p/a.py]
2163
+ import p
2164
+ def foo() -> int: pass
2165
+ [file p/b.py]
2166
+ import p
2167
+
2168
+ def run() -> None:
2169
+ reveal_type(p.a.foo())
2170
+ [builtins fixtures/module.pyi]
2171
+ [out]
2172
+ tmp/p/b.py:4: error: Revealed type is 'builtins.int'
2173
+ tmp/p/__init__.py:3: error: Revealed type is 'builtins.int'
You can’t perform that action at this time.
0 commit comments