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(
67636763def conditional_types_to_typemaps (
67646764 expr : Expression , yes_type : Type | None , no_type : Type | None
67656765) -> tuple [TypeMap , TypeMap ]:
6766+ expr = collapse_walrus (expr )
67666767 maps : list [TypeMap ] = []
67676768 for typ in (yes_type , no_type ):
67686769 proper_type = get_proper_type (typ )
Original file line number Diff line number Diff line change @@ -1841,3 +1841,25 @@ class D: pass
18411841X = None | C
18421842Y = None | D
18431843[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