diff --git a/test-data/unit/check-narrowing.test b/test-data/unit/check-narrowing.test index 47ad62248fe0..3590d1cf2f26 100644 --- a/test-data/unit/check-narrowing.test +++ b/test-data/unit/check-narrowing.test @@ -2577,3 +2577,26 @@ def check_d(arg: D[T]) -> None: return reveal_type(arg) # N: Revealed type is "tuple[T`-1, fallback=__main__.D[Any]]" [builtins fixtures/tuple.pyi] + + +[case testNarrowingUnionMixins] +class Base: ... + +class FooMixin: + def foo(self) -> None: ... + +class BarMixin: + def bar(self) -> None: ... + +def baz(item: Base) -> None: + if not isinstance(item, (FooMixin, BarMixin)): + raise + + reveal_type(item) # N: Revealed type is "Union[__main__., __main__.]" + if isinstance(item, FooMixin): + reveal_type(item) # N: Revealed type is "__main__.FooMixin" + item.foo() + else: + reveal_type(item) # N: Revealed type is "__main__." + item.bar() +[builtins fixtures/isinstance.pyi]