From dfcc0c4b1a9b57b10f8d46ca3d1f6e843e273397 Mon Sep 17 00:00:00 2001 From: "Terence D. Honles" Date: Wed, 5 Jun 2024 06:54:48 -0700 Subject: [PATCH] add xfail test for unsupported enum nonmember --- test-data/unit/check-python311.test | 36 +++++++++++++++++++++++++++++ test-data/unit/lib-stub/enum.pyi | 3 +++ 2 files changed, 39 insertions(+) diff --git a/test-data/unit/check-python311.test b/test-data/unit/check-python311.test index 2d1a09ef3336..87d9beadae58 100644 --- a/test-data/unit/check-python311.test +++ b/test-data/unit/check-python311.test @@ -1,3 +1,39 @@ +[case testMatchLiteralPatternEnumWithNonMember-xfail] +from enum import Enum, nonmember +from typing import NoReturn +def assert_never(x: NoReturn) -> None: ... + +class int: + def __new__(cls, value: int): pass + +class Medal(int, Enum): + prize: str = nonmember("nothing") + + def __new__(cls, value: int, prize: str | None) -> Medal: + enum = int.__new__(cls, value) + enum._value_ = value + if prize is not None: + enum.prize = prize + return enum + + gold = (1, 'cash prize') + silver = (2, 'sponsorship') + bronze = (3, 'nothing') + +m: Medal + +match m: + case Medal.gold: + reveal_type(m) # N: Revealed type is "Literal[__main__.Medal.gold]" + case Medal.silver: + reveal_type(m) # N: Revealed type is "Literal[__main__.Medal.silver]" + case Medal.bronze: + reveal_type(m) # N: Revealed type is "Literal[__main__.Medal.bronze]" + case _ as unreachable: + assert_never(unreachable) + +[builtins fixtures/tuple.pyi] + [case testTryStarSimple] try: pass diff --git a/test-data/unit/lib-stub/enum.pyi b/test-data/unit/lib-stub/enum.pyi index 11adfc597955..3503954d8d92 100644 --- a/test-data/unit/lib-stub/enum.pyi +++ b/test-data/unit/lib-stub/enum.pyi @@ -48,3 +48,6 @@ class auto(IntFlag): # It is python-3.11+ only: class StrEnum(str, Enum): def __new__(cls: Type[_T], value: str | _T) -> _T: ... + + +def nonmember(value: _T) -> _T: pass