Skip to content

Commit dfcc0c4

Browse files
committed
add xfail test for unsupported enum nonmember
1 parent 8eb4218 commit dfcc0c4

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

test-data/unit/check-python311.test

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,39 @@
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+
137
[case testTryStarSimple]
238
try:
339
pass

test-data/unit/lib-stub/enum.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,6 @@ class auto(IntFlag):
4848
# It is python-3.11+ only:
4949
class StrEnum(str, Enum):
5050
def __new__(cls: Type[_T], value: str | _T) -> _T: ...
51+
52+
53+
def nonmember(value: _T) -> _T: pass

0 commit comments

Comments
 (0)