◐ Shell
clean mode source ↗

Confusing error message when attempting to pass a newtype as a match pattern

from typing import NewType

T = NewType('T', str)

match 'test':
    case T(): ...

fails with:

Traceback (most recent call last):
  File "/tmp/foo.py", line 6, in <module>
    case T(): ...
         ^^^
TypeError: called match pattern must be a type

The error message is confusing because T is a type. The error message should probably say class instead of type, since as per the specification it's a class pattern.

Linked PRs