@@ -16,29 +16,34 @@ func passingToId<T: CP, U>(receiver: IdLover,
16
16
generic: U ,
17
17
existential: P ,
18
18
any: Any ) {
19
- // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF:%.*]] : $IdLover,
19
+ // CHECK: bb0([[SELF:%.*]] : $IdLover, [[STRING:%.*]] : $String, [[NSSTRING:%.*]] : $NSString, [[OBJECT:%.*]] : $AnyObject, [[CLASS_GENERIC:%.*]] : $T, [[CLASS_EXISTENTIAL:%.*]] : $CP
20
+
21
+ // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF]]
20
22
// CHECK: [[BRIDGE_STRING:%.*]] = function_ref @_TFE10FoundationSS19_bridgeToObjectiveC
21
- // CHECK: [[NSSTRING :%.*]] = apply [[BRIDGE_STRING]]
22
- // CHECK: [[ANYOBJECT:%.*]] = init_existential_ref [[NSSTRING ]] : $NSString : $NSString, $AnyObject
23
+ // CHECK: [[BRIDGED :%.*]] = apply [[BRIDGE_STRING]]([[STRING]])
24
+ // CHECK: [[ANYOBJECT:%.*]] = init_existential_ref [[BRIDGED ]] : $NSString : $NSString, $AnyObject
23
25
// CHECK: apply [[METHOD]]([[ANYOBJECT]], [[SELF]])
24
26
receiver. takesId ( string)
25
27
26
- // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF:%.* ]] : $IdLover,
27
- // CHECK: [[ANYOBJECT:%.*]] = init_existential_ref {{%.*}} : $NSString : $NSString, $AnyObject
28
+ // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF]] : $IdLover,
29
+ // CHECK: [[ANYOBJECT:%.*]] = init_existential_ref [[NSSTRING]] : $NSString : $NSString, $AnyObject
28
30
// CHECK: apply [[METHOD]]([[ANYOBJECT]], [[SELF]])
29
31
receiver. takesId ( nsString)
30
32
31
- // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF:%.* ]] : $IdLover,
32
- // CHECK: [[ANYOBJECT:%.*]] = init_existential_ref {{%.*}} : $T : $T, $AnyObject
33
+ // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF]] : $IdLover,
34
+ // CHECK: [[ANYOBJECT:%.*]] = init_existential_ref [[CLASS_GENERIC]] : $T : $T, $AnyObject
33
35
// CHECK: apply [[METHOD]]([[ANYOBJECT]], [[SELF]])
34
36
receiver. takesId ( classGeneric)
35
37
36
- // TODO: Need to look through an (open_existential (erasure)) combo to upcast
37
- // an existential to Any.
38
- /*
38
+ // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF]] : $IdLover,
39
+ // CHECK: apply [[METHOD]]([[OBJECT]], [[SELF]])
39
40
receiver. takesId ( object)
41
+
42
+ // CHECK: [[METHOD:%.*]] = class_method [volatile] [[SELF]] : $IdLover,
43
+ // CHECK: [[OPENED:%.*]] = open_existential_ref [[CLASS_EXISTENTIAL]] : $CP
44
+ // CHECK: [[ANYOBJECT:%.*]] = init_existential_ref [[OPENED]]
45
+ // CHECK: apply [[METHOD]]([[ANYOBJECT]], [[SELF]])
40
46
receiver. takesId ( classExistential)
41
- */
42
47
43
48
// TODO: These cases need to perform a (to-be-implemented) universal
44
49
// bridging conversion.
0 commit comments