@@ -47,7 +47,8 @@ func testArrayUpcast(_ array: [BridgedObjC]) {
4747 // CHECK: [[ARRAY_COPY:%.*]] = copy_value [[ARRAY]]
4848 // CHECK: [[UPCAST_FN:%[0-9]+]] = function_ref @$ss15_arrayForceCast{{.*}}F : $@convention(thin) <τ_0_0, τ_0_1> (@guaranteed Array<τ_0_0>) -> @owned Array<τ_0_1>
4949 // CHECK: [[RESULT:%.*]] = apply [[UPCAST_FN]]<BridgedObjC, AnyObject>([[ARRAY_COPY]]) : $@convention(thin) <τ_0_0, τ_0_1> (@guaranteed Array<τ_0_0>) -> @owned Array<τ_0_1>
50- // CHECK: destroy_value [[RESULT]]
50+ // CHECK: [[RESULT_LIFETIME:%.*]] = move_value [var_decl] [[RESULT]]
51+ // CHECK: destroy_value [[RESULT_LIFETIME]]
5152 // CHECK-NOT: destroy_value [[ARRAY]]
5253 let anyObjectArr : [ AnyObject ] = array
5354}
@@ -59,7 +60,8 @@ func testArrayUpcastBridged(_ array: [BridgedSwift]) {
5960 // CHECK: [[ARRAY_COPY:%.*]] = copy_value [[ARRAY]]
6061 // CHECK: [[BRIDGE_FN:%[0-9]+]] = function_ref @$ss15_arrayForceCast{{.*}}F : $@convention(thin) <τ_0_0, τ_0_1> (@guaranteed Array<τ_0_0>) -> @owned Array<τ_0_1>
6162 // CHECK: [[RESULT:%.*]] = apply [[BRIDGE_FN]]<BridgedSwift, AnyObject>([[ARRAY_COPY]]) : $@convention(thin) <τ_0_0, τ_0_1> (@guaranteed Array<τ_0_0>) -> @owned Array<τ_0_1>
62- // CHECK: destroy_value [[RESULT]]
63+ // CHECK: [[RESULT_LIFETIME:%.*]] = move_value [var_decl] [[RESULT]]
64+ // CHECK: destroy_value [[RESULT_LIFETIME]]
6365 // CHECK-NOT: destroy_value [[ARRAY]]
6466 let anyObjectArr = array as [ AnyObject ]
6567}
@@ -71,7 +73,8 @@ func testDictionaryUpcast(_ dict: Dictionary<BridgedObjC, BridgedObjC>) {
7173 // CHECK: [[DICT_COPY:%.*]] = copy_value [[DICT]]
7274 // CHECK: [[UPCAST_FN:%[0-9]+]] = function_ref @$ss17_dictionaryUpCast{{.*}}F : $@convention(thin) <τ_0_0, τ_0_1, τ_0_2, τ_0_3 where τ_0_0 : Hashable, τ_0_2 : Hashable> (@guaranteed Dictionary<τ_0_0, τ_0_1>) -> @owned Dictionary<τ_0_2, τ_0_3>
7375 // CHECK: [[RESULT:%.*]] = apply [[UPCAST_FN]]<BridgedObjC, BridgedObjC, NSObject, AnyObject>([[DICT_COPY]]) : $@convention(thin) <τ_0_0, τ_0_1, τ_0_2, τ_0_3 where τ_0_0 : Hashable, τ_0_2 : Hashable> (@guaranteed Dictionary<τ_0_0, τ_0_1>) -> @owned Dictionary<τ_0_2, τ_0_3>
74- // CHECK: destroy_value [[RESULT]]
76+ // CHECK: [[RESULT_LIFETIME:%.*]] = move_value [var_decl] [[RESULT]]
77+ // CHECK: destroy_value [[RESULT_LIFETIME]]
7578 // CHECK-NOT: destroy_value [[DICT]]
7679 let anyObjectDict : Dictionary < NSObject , AnyObject > = dict
7780}
@@ -82,7 +85,8 @@ func testDictionaryUpcastBridged(_ dict: Dictionary<BridgedSwift, BridgedSwift>)
8285 // CHECK: [[DICT_COPY:%.*]] = copy_value [[DICT]]
8386 // CHECK: [[BRIDGE_FN:%[0-9]+]] = function_ref @$ss17_dictionaryUpCast{{.*}}F
8487 // CHECK: [[RESULT:%.*]] = apply [[BRIDGE_FN]]<BridgedSwift, BridgedSwift, NSObject, AnyObject>([[DICT_COPY]]) : $@convention(thin) <τ_0_0, τ_0_1, τ_0_2, τ_0_3 where τ_0_0 : Hashable, τ_0_2 : Hashable> (@guaranteed Dictionary<τ_0_0, τ_0_1>) -> @owned Dictionary<τ_0_2, τ_0_3>
85- // CHECK: destroy_value [[RESULT]]
88+ // CHECK: [[RESULT_LIFETIME:%.*]] = move_value [var_decl] [[RESULT]]
89+ // CHECK: destroy_value [[RESULT_LIFETIME]]
8690 // CHECK-NOT: destroy_value [[DICT]]
8791 let anyObjectDict = dict as Dictionary < NSObject , AnyObject >
8892}
@@ -93,7 +97,8 @@ func testSetUpcast(_ dict: Set<BridgedObjC>) {
9397 // CHECK: [[SET_COPY:%.*]] = copy_value [[SET]]
9498 // CHECK: [[BRIDGE_FN:%[0-9]+]] = function_ref @$ss10_setUpCast{{.*}}F : $@convention(thin) <τ_0_0, τ_0_1 where τ_0_0 : Hashable, τ_0_1 : Hashable> (@guaranteed Set<τ_0_0>) -> @owned Set<τ_0_1>
9599 // CHECK: [[RESULT:%.*]] = apply [[BRIDGE_FN]]<BridgedObjC, NSObject>([[SET_COPY]]) : $@convention(thin) <τ_0_0, τ_0_1 where τ_0_0 : Hashable, τ_0_1 : Hashable> (@guaranteed Set<τ_0_0>) -> @owned Set<τ_0_1>
96- // CHECK: destroy_value [[RESULT]]
100+ // CHECK: [[RESULT_LIFETIME:%.*]] = move_value [var_decl] [[RESULT]]
101+ // CHECK: destroy_value [[RESULT_LIFETIME]]
97102 // CHECK-NOT: destroy_value [[SET]]
98103 let anyObjectSet : Set < NSObject > = dict
99104}
@@ -104,7 +109,8 @@ func testSetUpcastBridged(_ set: Set<BridgedSwift>) {
104109 // CHECK: [[SET_COPY:%.*]] = copy_value [[SET]]
105110 // CHECK: [[BRIDGE_FN:%[0-9]+]] = function_ref @$ss10_setUpCast{{.*}}F
106111 // CHECK: [[RESULT:%.*]] = apply [[BRIDGE_FN]]<BridgedSwift, NSObject>([[SET_COPY]]) : $@convention(thin) <τ_0_0, τ_0_1 where τ_0_0 : Hashable, τ_0_1 : Hashable> (@guaranteed Set<τ_0_0>) -> @owned Set<τ_0_1>
107- // CHECK: destroy_value [[RESULT]]
112+ // CHECK: [[RESULT_LIFETIME:%.*]] = move_value [var_decl] [[RESULT]]
113+ // CHECK: destroy_value [[RESULT_LIFETIME]]
108114 // CHECK-NOT: destroy_value [[SET]]
109115 let anyObjectSet = set as Set < NSObject >
110116}
0 commit comments