summaryrefslogtreecommitdiff
path: root/tests/functional/i/isinstance_second_argument_py310.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/i/isinstance_second_argument_py310.py')
-rw-r--r--tests/functional/i/isinstance_second_argument_py310.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/functional/i/isinstance_second_argument_py310.py b/tests/functional/i/isinstance_second_argument_py310.py
new file mode 100644
index 000000000..8a0c17af5
--- /dev/null
+++ b/tests/functional/i/isinstance_second_argument_py310.py
@@ -0,0 +1,27 @@
+'''Tests for invalid isinstance with compound types'''
+
+# True negatives
+isinstance(0, int | str)
+isinstance(0, int | int | int)
+isinstance(0, int | str | list | float)
+isinstance(0, (int | str) | (list | float))
+
+IntOrStr = int | str
+isinstance(0, IntOrStr)
+ListOrDict = list | dict
+isinstance(0, (float | ListOrDict) | IntOrStr)
+
+# True positives
+isinstance(0, int | 5) # [isinstance-second-argument-not-valid-type]
+isinstance(0, str | 5 | int) # [isinstance-second-argument-not-valid-type]
+INT = 5
+isinstance(0, INT | int) # [isinstance-second-argument-not-valid-type]
+
+
+# FALSE NEGATIVES
+
+# Parameterized generics will raise type errors at runtime.
+# Warnings should be raised, but aren't (yet).
+isinstance(0, list[int])
+ListOfInts = list[int]
+isinstance(0, ListOfInts)