@@ -232,7 +232,7 @@ func test_tuple_casts_no_warn() {
232
232
_ = arr as! [ ( Foo , Foo ) ] // Ok
233
233
_ = tup as! ( Foo , Foo ) // Ok
234
234
235
- _ = arr as! [ ( Foo , Foo , Foo ) ] // expected-warning {{cast from '[(Any, Any)]' to unrelated type '[(Foo, Foo, Foo)]' always fails}}
235
+ _ = arr as! [ ( Foo , Foo , Foo ) ] // Ok
236
236
_ = tup as! ( Foo , Foo , Foo ) // expected-warning {{cast from '(Any, Any)' to unrelated type '(Foo, Foo, Foo)' always fails}}
237
237
238
238
_ = arr as! [ ( a: Foo , Foo ) ] // Ok
@@ -422,6 +422,33 @@ func tests_SR13088_false_positive_always_fail_casts() {
422
422
break
423
423
}
424
424
}
425
+
426
+ // SR-7187
427
+ let a : [ Any ] = [ String ? . some ( " hello " ) as Any , String ? . none as Any ]
428
+ let b : [ AnyObject ] = [ String ? . some ( " hello " ) as AnyObject , String ? . none as AnyObject ]
429
+
430
+ _ = a is [ String ? ] // Ok
431
+ _ = a as? [ String ? ] as Any // OK
432
+ _ = b is [ String ? ] // Ok
433
+ _ = b as? [ String ? ] as AnyObject // OK
434
+
435
+ // SR-6192
436
+ let items = [ String] ( )
437
+ let dict = [ String: Any] ( )
438
+ let set = Set < String > ( )
439
+
440
+ _ = items is [ Int ] // Ok
441
+ _ = items as? [ Int ] as Any // Ok
442
+ _ = items as! [ Int ] // Ok
443
+
444
+ _ = dict is [ Int : Any ] // Ok
445
+ _ = dict as? [ Int : Any ] as Any // Ok
446
+ _ = dict as! [ Int : Any ] as Any // Ok
447
+
448
+ _ = set is Set < Int > // Ok
449
+ _ = set as? Set < Int > as Any // Ok
450
+ _ = set as! Set < Int > // Ok
451
+
425
452
}
426
453
427
454
// Protocol composition
0 commit comments