@@ -41,7 +41,7 @@ public func genericPropertyOnAnyObject(o: AnyObject, b: Bool) -> AnyObject?? {
41
41
// CHECK: dynamic_method_br %4 : $@opened([[TAG:.*]]) AnyObject, #GenericClass.propertyThing!getter.1.foreign, bb1
42
42
// CHECK: bb1({{%.*}} : $@convention(objc_method) @pseudogeneric (@opened([[TAG]]) AnyObject) -> @autoreleased Optional<AnyObject>):
43
43
44
- protocol ThingHolder {
44
+ public protocol ThingHolder {
45
45
associatedtype Thing
46
46
47
47
init !( thing: Thing ! )
@@ -56,16 +56,20 @@ protocol ThingHolder {
56
56
57
57
extension GenericClass : ThingHolder { }
58
58
59
- public func genericBlockBridging< T: AnyObject > ( x: GenericClass < T > ) {
59
+ public protocol Ansible : class {
60
+ associatedtype Anser : ThingHolder
61
+ }
62
+
63
+ public func genericBlockBridging< T: Ansible > ( x: GenericClass < T > ) {
60
64
let block = x. blockForPerformingOnThings ( )
61
65
x. performBlock ( onThings: block)
62
66
}
63
67
64
68
// CHECK-LABEL: sil @_TF21objc_imported_generic20genericBlockBridging
65
- // CHECK: [[BLOCK_TO_FUNC:%.*]] = function_ref @_TTRGRxs9AnyObjectrXFdCb_dx_ax_XFo_ox_ox_
66
- // CHECK: partial_apply [[BLOCK_TO_FUNC]]<T>
67
- // CHECK: [[FUNC_TO_BLOCK:%.*]] = function_ref @_TTRGRxs9AnyObjectrXFo_ox_ox_XFdCb_dx_ax_
68
- // CHECK: init_block_storage_header {{.*}} invoke [[FUNC_TO_BLOCK]]<T>
69
+ // CHECK: [[BLOCK_TO_FUNC:%.*]] = function_ref @_TTRGRxs9AnyObjectx21objc_imported_generic7AnsiblerXFdCb_dx_ax_XFo_ox_ox_
70
+ // CHECK: partial_apply [[BLOCK_TO_FUNC]]<T, {{.*}} >
71
+ // CHECK: [[FUNC_TO_BLOCK:%.*]] = function_ref @_TTRGRxs9AnyObjectx21objc_imported_generic7AnsiblerXFo_ox_ox_XFdCb_dx_ax_
72
+ // CHECK: init_block_storage_header {{.*}} invoke [[FUNC_TO_BLOCK]]<T,{{.*}} >
69
73
70
74
// CHECK-LABEL: sil @_TF21objc_imported_generic20arraysOfGenericParam
71
75
public func arraysOfGenericParam< T: AnyObject > ( y: Array < T > ) {
0 commit comments