File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -6763,6 +6763,7 @@ def conditional_types(
6763
6763
def conditional_types_to_typemaps (
6764
6764
expr : Expression , yes_type : Type | None , no_type : Type | None
6765
6765
) -> tuple [TypeMap , TypeMap ]:
6766
+ expr = collapse_walrus (expr )
6766
6767
maps : list [TypeMap ] = []
6767
6768
for typ in (yes_type , no_type ):
6768
6769
proper_type = get_proper_type (typ )
Original file line number Diff line number Diff line change @@ -1841,3 +1841,25 @@ class D: pass
1841
1841
X = None | C
1842
1842
Y = None | D
1843
1843
[builtins fixtures/type.pyi]
1844
+
1845
+ [case testMatchStatementWalrus]
1846
+ class A:
1847
+ a = 1
1848
+
1849
+ def returns_a_or_none() -> A | None:
1850
+ return A()
1851
+
1852
+ def returns_a() -> A:
1853
+ return A()
1854
+
1855
+ def f() -> None:
1856
+ match x := returns_a_or_none():
1857
+ case A():
1858
+ reveal_type(x.a) # N: Revealed type is "builtins.int"
1859
+ match x := returns_a():
1860
+ case A():
1861
+ reveal_type(x.a) # N: Revealed type is "builtins.int"
1862
+ y = returns_a_or_none()
1863
+ match y:
1864
+ case A():
1865
+ reveal_type(y.a) # N: Revealed type is "builtins.int"
You can’t perform that action at this time.
0 commit comments