Skip to content

Commit 0621dc2

Browse files
committed
Use a bit more consistent logic
1 parent ab5c978 commit 0621dc2

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

mypy/semanal.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6340,7 +6340,11 @@ class C:
63406340
if node.name not in self.globals:
63416341
return True
63426342
global_node = self.globals[node.name]
6343-
return not global_node.node or not self.is_textually_before_statement(global_node.node)
6343+
return (
6344+
isinstance(global_node.node, (TypeInfo, TypeAlias))
6345+
or isinstance(global_node.node, PlaceholderNode)
6346+
and global_node.node.becomes_typeinfo
6347+
)
63446348
return False
63456349

63466350
def is_textually_before_statement(self, node: SymbolNode) -> bool:

test-data/unit/check-python312.test

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2004,15 +2004,15 @@ reveal_type(x.related_resources) # N: Revealed type is "__main__.ResourceRule"
20042004

20052005
[case testPEP695TypeAliasRecursiveOuterClass]
20062006
class A:
2007-
type X = X # E: Cannot resolve name "X" (possible cyclic definition)
2007+
type X = X
20082008
class X: ...
20092009

20102010
class Y: ...
20112011
class B:
2012-
type Y = Y # OK
2012+
type Y = Y
20132013

20142014
x: A.X
2015-
reveal_type(x) # N: Revealed type is "Any"
2015+
reveal_type(x) # N: Revealed type is "__main__.X"
20162016
y: B.Y
20172017
reveal_type(y) # N: Revealed type is "__main__.Y"
20182018
[builtins fixtures/tuple.pyi]

0 commit comments

Comments
 (0)