Skip to content

Missing return statement error using enums and match #15878

@ghost

Description

Bug Report

I have an exhaustive match block with return statements for each case, but mypy flags it as a missing return error: error: Missing return statement [return]

To Reproduce

from dataclasses import dataclass
from datetime import datetime
import enum
from typing import assert_never


class MyEnum(enum.Enum):
    a = "a"
    b = "b"
    c = "c"
    

@dataclass
class MyClass:
    expires_at: datetime | None
    
    @property
    def status(self) -> MyEnum:
        match self.expires_at:
            case None:
                return MyEnum.a
            case time if time <= datetime.now():
                return MyEnum.b
            case _:
                return MyEnum.c

https://mypy-play.net/?mypy=1.5.0&python=3.11&gist=122ad20737777670f775c802a36251d9

Expected Behavior

No error raised

Actual Behavior

error: Missing return statement [return] is raised

Your Environment

  • Mypy version used: 1.5.0
  • Python version used: 3.11

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrong

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions