File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ [case testMatchLiteralPatternEnumWithNonMember-xfail]
2
+ from enum import Enum, nonmember
3
+ from typing import NoReturn
4
+ def assert_never(x: NoReturn) -> None: ...
5
+
6
+ class int:
7
+ def __new__(cls, value: int): pass
8
+
9
+ class Medal(int, Enum):
10
+ prize: str = nonmember("nothing")
11
+
12
+ def __new__(cls, value: int, prize: str | None) -> Medal:
13
+ enum = int.__new__(cls, value)
14
+ enum._value_ = value
15
+ if prize is not None:
16
+ enum.prize = prize
17
+ return enum
18
+
19
+ gold = (1, 'cash prize')
20
+ silver = (2, 'sponsorship')
21
+ bronze = (3, 'nothing')
22
+
23
+ m: Medal
24
+
25
+ match m:
26
+ case Medal.gold:
27
+ reveal_type(m) # N: Revealed type is "Literal[__main__.Medal.gold]"
28
+ case Medal.silver:
29
+ reveal_type(m) # N: Revealed type is "Literal[__main__.Medal.silver]"
30
+ case Medal.bronze:
31
+ reveal_type(m) # N: Revealed type is "Literal[__main__.Medal.bronze]"
32
+ case _ as unreachable:
33
+ assert_never(unreachable)
34
+
35
+ [builtins fixtures/tuple.pyi]
36
+
1
37
[case testTryStarSimple]
2
38
try:
3
39
pass
Original file line number Diff line number Diff line change @@ -48,3 +48,6 @@ class auto(IntFlag):
48
48
# It is python-3.11+ only:
49
49
class StrEnum (str , Enum ):
50
50
def __new__ (cls : Type [_T ], value : str | _T ) -> _T : ...
51
+
52
+
53
+ def nonmember (value : _T ) -> _T : pass
You can’t perform that action at this time.
0 commit comments