diff options
Diffstat (limited to 'tests/functional/i/isinstance_second_argument_py310.py')
-rw-r--r-- | tests/functional/i/isinstance_second_argument_py310.py | 27 |
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) |