summaryrefslogtreecommitdiff
path: root/tests/functional/i/isinstance_second_argument_py310.py
blob: ad2033b310f1f30293f5334fa14f3e97b064d6ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""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))
isinstance(0, int | None)
isinstance(0, None | int)

IntOrStr = int | str
isinstance(0, IntOrStr)
IntOrNone = int | None
isinstance(0, IntOrNone)
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)