SIGN IN SIGN UP
astral-sh / ruff UNCLAIMED

An extremely fast Python linter and code formatter, written in Rust.

0 0 149 Rust

[ty] Allow enum member accesses on `self` (#25077)

## Summary

This allows enum members to be resolved when accessed through a
`Self`-typed enum instance. Previously, enum member lookup handled
class-member patterns like `case Answer.YES:`, but not equivalent
self-member patterns like:

```py
class Answer(Enum):
    NO = 0
    YES = 1

    def is_yes(self) -> bool:
        match self:
            case self.YES:
                return True
```

The lookup reuses the receiver’s nominal class for nominal instances and
bounded `Self` typevars before resolving enum metadata, so `case
self.YES:` narrows the same way as `case Answer.YES:`.
C
Charlie Marsh committed
e9d72bb420f26c23e6660bfce4dfa0028b931bff
Parent: 6cbd59b
Committed by GitHub <noreply@github.com> on 5/21/2026, 11:39:18 AM