diff --git a/mypy/subtypes.py b/mypy/subtypes.py index e40a76514df4..a046cef23d68 100644 --- a/mypy/subtypes.py +++ b/mypy/subtypes.py @@ -120,6 +120,8 @@ def visit_instance(self, left: Instance) -> bool: if left.type.fallback_to_any: return True right = self.right + if isinstance(right, TupleType) and right.fallback.type.is_enum: + return is_subtype(left, right.fallback) if isinstance(right, Instance): if left.type._promote and is_subtype(left.type._promote, self.right, diff --git a/test-data/unit/pythoneval-enum.test b/test-data/unit/pythoneval-enum.test index 8044e999d882..3ae2df55f120 100644 --- a/test-data/unit/pythoneval-enum.test +++ b/test-data/unit/pythoneval-enum.test @@ -118,3 +118,17 @@ takes_int(SomeExtIntEnum.x) def takes_some_ext_int_enum(s: SomeExtIntEnum): pass takes_some_ext_int_enum(SomeExtIntEnum.x) + + +[case testNamedTupleEnum] +from typing import NamedTuple +from enum import Enum + +N = NamedTuple('N', [('bar', int)]) + +class E(N, Enum): + X = N(1) + +def f(x: E) -> None: pass + +f(E.X)