@@ -1158,6 +1158,52 @@ reveal_type(subtup if int() else vartup) # N: Revealed type is 'builtins.tuple[
1158
1158
[builtins fixtures/tuple.pyi]
1159
1159
[out]
1160
1160
1161
+ [case testTupleJoinIrregular]
1162
+ from typing import Tuple
1163
+
1164
+ tup1 = None # type: Tuple[bool, int]
1165
+ tup2 = None # type: Tuple[bool]
1166
+
1167
+ reveal_type(tup1 if int() else tup2) # N: Revealed type is 'builtins.tuple[builtins.int]'
1168
+ reveal_type(tup2 if int() else tup1) # N: Revealed type is 'builtins.tuple[builtins.int]'
1169
+
1170
+ reveal_type(tup1 if int() else ()) # N: Revealed type is 'builtins.tuple[builtins.int]'
1171
+ reveal_type(() if int() else tup1) # N: Revealed type is 'builtins.tuple[builtins.int]'
1172
+
1173
+ reveal_type(tup2 if int() else ()) # N: Revealed type is 'builtins.tuple[builtins.bool]'
1174
+ reveal_type(() if int() else tup2) # N: Revealed type is 'builtins.tuple[builtins.bool]'
1175
+
1176
+ [builtins fixtures/tuple.pyi]
1177
+ [out]
1178
+
1179
+ [case testTupleSubclassJoinIrregular]
1180
+ from typing import Tuple, NamedTuple
1181
+
1182
+ class NTup1(NamedTuple):
1183
+ a: bool
1184
+
1185
+ class NTup2(NamedTuple):
1186
+ a: bool
1187
+ b: bool
1188
+
1189
+ class SubTuple(Tuple[bool, int, int]): ...
1190
+
1191
+ tup1 = None # type: NTup1
1192
+ tup2 = None # type: NTup2
1193
+ subtup = None # type: SubTuple
1194
+
1195
+ reveal_type(tup1 if int() else tup2) # N: Revealed type is 'builtins.tuple[builtins.bool]'
1196
+ reveal_type(tup2 if int() else tup1) # N: Revealed type is 'builtins.tuple[builtins.bool]'
1197
+
1198
+ reveal_type(tup1 if int() else subtup) # N: Revealed type is 'builtins.tuple[builtins.int]'
1199
+ reveal_type(subtup if int() else tup1) # N: Revealed type is 'builtins.tuple[builtins.int]'
1200
+
1201
+ reveal_type(tup2 if int() else subtup) # N: Revealed type is 'builtins.tuple[builtins.int]'
1202
+ reveal_type(subtup if int() else tup2) # N: Revealed type is 'builtins.tuple[builtins.int]'
1203
+
1204
+ [builtins fixtures/tuple.pyi]
1205
+ [out]
1206
+
1161
1207
[case testTupleWithUndersizedContext]
1162
1208
a = ([1], 'x')
1163
1209
if int():
0 commit comments