summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/isinstance_impl.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/isinstance_impl.py b/tests/isinstance_impl.py
new file mode 100644
index 0000000000..50dccc5dc5
--- /dev/null
+++ b/tests/isinstance_impl.py
@@ -0,0 +1,30 @@
+# Per https://github.com/Shoobx/mypy-zope/pull/92#issuecomment-1483266683
+from typing import Optional
+from zope.interface import implementer, Interface
+
+
+class IFoo(Interface):
+    ...
+
+
+@implementer(IFoo)
+class MyFoo:
+    ...
+
+
+def make_foo() -> Optional[IFoo]:
+    return MyFoo()
+
+
+x = make_foo()
+reveal_type(x)
+assert isinstance(x, MyFoo)
+
+# The code below should not be considered unreachable
+print("hello")
+
+"""
+<output>
+isinstance_impl.py:19: note: Revealed type is "Union[__main__.IFoo, None]"
+</output>
+"""