@@ -1059,3 +1059,100 @@ x: Union[None, Any]
1059
1059
y: Union[int, None]
1060
1060
reveal_type(f(x, y)) # N: Revealed type is "Union[None, Any, builtins.int]"
1061
1061
reveal_type(f(y, x)) # N: Revealed type is "Union[builtins.int, None, Any]"
1062
+
1063
+ [case testNestedProtocolUnions]
1064
+ from typing import Union, Iterator, Iterable
1065
+ def foo(
1066
+ values: Union[
1067
+ Iterator[Union[
1068
+ Iterator[Union[Iterator[int], Iterable[int]]],
1069
+ Iterable[Union[Iterator[int], Iterable[int]]],
1070
+ ]],
1071
+ Iterable[Union[
1072
+ Iterator[Union[Iterator[int], Iterable[int]]],
1073
+ Iterable[Union[Iterator[int], Iterable[int]]],
1074
+ ]],
1075
+ ]
1076
+ ) -> Iterator[int]:
1077
+ for i in values:
1078
+ for j in i:
1079
+ for k in j:
1080
+ yield k
1081
+ foo([[[1]]])
1082
+ [builtins fixtures/list.pyi]
1083
+
1084
+ [case testNestedProtocolGenericUnions]
1085
+ from typing import Union, Iterator, List
1086
+ def foo(
1087
+ values: Union[
1088
+ Iterator[Union[
1089
+ Iterator[Union[Iterator[int], List[int]]],
1090
+ List[Union[Iterator[int], List[int]]],
1091
+ ]],
1092
+ List[Union[
1093
+ Iterator[Union[Iterator[int], List[int]]],
1094
+ List[Union[Iterator[int], List[int]]],
1095
+ ]],
1096
+ ]
1097
+ ) -> Iterator[int]:
1098
+ for i in values:
1099
+ for j in i:
1100
+ for k in j:
1101
+ yield k
1102
+ foo([[[1]]])
1103
+ [builtins fixtures/list.pyi]
1104
+
1105
+ [case testNestedProtocolGenericUnionsDeep]
1106
+ from typing import TypeVar, Union, Iterator, List
1107
+ T = TypeVar("T")
1108
+ Iter = Union[Iterator[T], List[T]]
1109
+ def foo(
1110
+ values: Iter[Iter[Iter[Iter[Iter[int]]]]],
1111
+ ) -> Iterator[int]:
1112
+ for i in values:
1113
+ for j in i:
1114
+ for k in j:
1115
+ for l in k:
1116
+ for m in l:
1117
+ yield m
1118
+ foo([[[[[1]]]]])
1119
+ [builtins fixtures/list.pyi]
1120
+
1121
+ [case testNestedInstanceUnsimplifiedUnion]
1122
+ from typing import TypeVar, Union, Iterator, List, Any
1123
+ T = TypeVar("T")
1124
+
1125
+ Iter = Union[Iterator[T], List[T]]
1126
+ def foo(
1127
+ values: Iter[Union[Any, Any]],
1128
+ ) -> Iterator[Any]:
1129
+ for i in values:
1130
+ yield i
1131
+ foo([1])
1132
+ [builtins fixtures/list.pyi]
1133
+
1134
+ [case testNestedInstanceTypeAlias]
1135
+ from typing import TypeVar, Union, Iterator, List, Any
1136
+ T = TypeVar("T")
1137
+
1138
+ Iter = Union[Iterator[T], List[T]]
1139
+ def foo(
1140
+ values: Iter["Any"],
1141
+ ) -> Iterator[Any]:
1142
+ for i in values:
1143
+ yield i
1144
+ foo([1])
1145
+ [builtins fixtures/list.pyi]
1146
+
1147
+ [case testNestedInstanceTypeAliasUnsimplifiedUnion]
1148
+ from typing import TypeVar, Union, Iterator, List, Any
1149
+ T = TypeVar("T")
1150
+
1151
+ Iter = Union[Iterator[T], List[T]]
1152
+ def foo(
1153
+ values: Iter["Union[Any, Any]"],
1154
+ ) -> Iterator[Any]:
1155
+ for i in values:
1156
+ yield i
1157
+ foo([1])
1158
+ [builtins fixtures/list.pyi]
0 commit comments