aboutsummaryrefslogtreecommitdiff
path: root/tests/functional/p/postponed_evaluation_pep585_error.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/p/postponed_evaluation_pep585_error.py')
-rw-r--r--tests/functional/p/postponed_evaluation_pep585_error.py116
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/functional/p/postponed_evaluation_pep585_error.py b/tests/functional/p/postponed_evaluation_pep585_error.py
new file mode 100644
index 000000000..71f09dc4c
--- /dev/null
+++ b/tests/functional/p/postponed_evaluation_pep585_error.py
@@ -0,0 +1,116 @@
+"""Test PEP 585 without postponed evaluation. Everything should fail.
+
+This check requires Python 3.7 or Python 3.8!
+Testing with 3.8 only, to support TypedDict.
+"""
+# pylint: disable=missing-docstring,unused-argument,unused-import,too-few-public-methods,invalid-name,inherit-non-class,unsupported-binary-operation,unused-variable,line-too-long
+import collections
+import dataclasses
+import typing
+from dataclasses import dataclass
+from typing import Any, Dict, NamedTuple, TypedDict, Union
+
+
+AliasInvalid = list[int] # [unsubscriptable-object]
+
+class CustomIntList(typing.List[int]):
+ pass
+
+class CustomIntListError(list[int]): # [unsubscriptable-object]
+ pass
+
+cast_variable = [1, 2, 3]
+cast_variable = typing.cast(list[int], cast_variable) # [unsubscriptable-object]
+
+T = typing.TypeVar("T", list[int], str) # [unsubscriptable-object]
+
+(lambda x: 2)(list[int]) # [unsubscriptable-object]
+
+
+# Check typing.NamedTuple
+CustomNamedTuple = typing.NamedTuple(
+ "CustomNamedTuple", [("my_var", list[int])]) # [unsubscriptable-object]
+
+class CustomNamedTuple2(NamedTuple):
+ my_var: list[int] # [unsubscriptable-object]
+
+class CustomNamedTuple3(typing.NamedTuple):
+ my_var: list[int] # [unsubscriptable-object]
+
+
+# Check typing.TypedDict
+CustomTypedDict = TypedDict("CustomTypedDict", my_var=list[int]) # [unsubscriptable-object]
+
+CustomTypedDict2 = TypedDict("CustomTypedDict2", {"my_var": list[int]}) # [unsubscriptable-object]
+
+class CustomTypedDict3(TypedDict):
+ my_var: list[int] # [unsubscriptable-object]
+
+class CustomTypedDict4(typing.TypedDict):
+ my_var: list[int] # [unsubscriptable-object]
+
+
+# Check dataclasses
+def my_decorator(*args, **kwargs):
+ def wraps(*args, **kwargs):
+ pass
+ return wraps
+
+@dataclass
+class CustomDataClass:
+ my_var: list[int] # [unsubscriptable-object]
+
+@dataclasses.dataclass
+class CustomDataClass2:
+ my_var: list[int] # [unsubscriptable-object]
+
+@dataclass()
+class CustomDataClass3:
+ my_var: list[int] # [unsubscriptable-object]
+
+@my_decorator
+@dataclasses.dataclass
+class CustomDataClass4:
+ my_var: list[int] # [unsubscriptable-object]
+
+
+var1: set[int] # [unsubscriptable-object]
+var2: collections.OrderedDict[str, int] # [unsubscriptable-object]
+var3: dict[str, list[int]] # [unsubscriptable-object,unsubscriptable-object]
+var4: Dict[str, list[int]] # [unsubscriptable-object]
+var5: dict[tuple[int, int], str] # [unsubscriptable-object,unsubscriptable-object]
+var6: Dict[tuple[int, int], str] # [unsubscriptable-object]
+var7: list[list[int]] # [unsubscriptable-object,unsubscriptable-object]
+var8: tuple[list[int]] # [unsubscriptable-object,unsubscriptable-object]
+var9: int | list[str | int] # [unsubscriptable-object]
+var10: Union[list[str], None] # [unsubscriptable-object]
+var11: Union[Union[list[int], int]] # [unsubscriptable-object]
+
+def func(arg: list[int]): # [unsubscriptable-object]
+ pass
+
+def func2() -> list[int]: # [unsubscriptable-object]
+ pass
+
+Alias2 = Union[list[str], None] # [unsubscriptable-object]
+Alias3 = Union[Union[list[int], int]] # [unsubscriptable-object]
+Alias5 = Dict[str, list[int]] # [unsubscriptable-object]
+Alias6 = int | list[int] # [unsubscriptable-object]
+Alias7 = list[list[int]] # [unsubscriptable-object,unsubscriptable-object]
+
+
+def func3():
+ AliasInvalid2 = list[int] # [unsubscriptable-object]
+ cast_variable2 = [1, 2, 3]
+ cast_variable2 = typing.cast(list[int], cast_variable2) # [unsubscriptable-object]
+ var12: list[int] # [unsubscriptable-object]
+
+def func4(var=list[int]): # [unsubscriptable-object]
+ pass
+
+def func5(arg1: list[int], arg2=set[int]): # [unsubscriptable-object,unsubscriptable-object]
+ pass
+
+def func6(arg1: list[int], /, *args: tuple[str], arg2: set[int], **kwargs: dict[str, Any]):
+ # -1:[unsubscriptable-object,unsubscriptable-object,unsubscriptable-object,unsubscriptable-object]
+ pass