1
1
// RUN: %empty-directory(%t)
2
2
// RUN: %build-silgen-test-overlays
3
3
4
- // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-silgen %s -Xllvm -sil-print-debuginfo -import-objc-header %S/Inputs/objc_bridged_results.h | %FileCheck %s
4
+ // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-silgen %s -Xllvm -sil-print-debuginfo -import-objc-header %S/Inputs/objc_bridged_results.h -enable-sil-ownership | %FileCheck %s
5
5
6
6
// REQUIRES: objc_interop
7
7
8
8
import Foundation
9
9
10
10
// CHECK-LABEL: sil hidden @_T020objc_bridged_results11testNonnullSayypGSo4TestCF
11
- // CHECK: bb0([[ARG:%.*]] : $Test):
11
+ // CHECK: bb0([[ARG:%.*]] : @owned $Test):
12
12
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
13
13
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $Test, #Test.nonnullArray!getter.1.foreign : (Test) -> () -> [Any], $@convention(objc_method) (Test) -> @autoreleased Optional<NSArray>
14
14
// CHECK: [[COCOA_VAL:%[0-9]+]] = apply [[METHOD]]([[BORROWED_ARG]]) : $@convention(objc_method) (Test) -> @autoreleased Optional<NSArray>
@@ -23,13 +23,13 @@ func testNonnull(_ obj: Test) -> [Any] {
23
23
24
24
// CHECK-LABEL: sil hidden @_T020objc_bridged_results12testNullableSayypGSgSo4TestCF
25
25
func testNullable( _ obj: Test ) -> [ Any ] ? {
26
- // CHECK: bb0([[ARG:%.*]] : $Test):
26
+ // CHECK: bb0([[ARG:%.*]] : @owned $Test):
27
27
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
28
28
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $Test, #Test.nullableArray!getter.1.foreign : (Test) -> () -> [Any]?, $@convention(objc_method) (Test) -> @autoreleased Optional<NSArray>
29
29
// CHECK: [[COCOA_VAL:%[0-9]+]] = apply [[METHOD]]([[BORROWED_ARG]]) : $@convention(objc_method) (Test) -> @autoreleased Optional<NSArray>
30
30
// CHECK: switch_enum [[COCOA_VAL]] : $Optional<NSArray>, case #Optional.some!enumelt.1: [[CASE_NON_NIL:bb[0-9]+]], case #Optional.none!enumelt: [[CASE_NIL:bb[0-9]+]]
31
31
//
32
- // CHECK: [[CASE_NON_NIL]]([[COCOA_VAL_NON_NIL:%.*]] : $NSArray):
32
+ // CHECK: [[CASE_NON_NIL]]([[COCOA_VAL_NON_NIL:%.*]] : @owned $NSArray):
33
33
// CHECK-NOT: unchecked_enum_data
34
34
// CHECK: [[CONVERT:%[0-9]+]] = function_ref @_T0Sa10FoundationE36_unconditionallyBridgeFromObjectiveCSayxGSo7NSArrayCSgFZ
35
35
// CHECK: [[COCOA_SOME_VAL:%[0-9]+]] = enum $Optional<NSArray>, #Optional.some!enumelt.1, [[COCOA_VAL_NON_NIL]]
@@ -42,7 +42,7 @@ func testNullable(_ obj: Test) -> [Any]? {
42
42
// CHECK: [[RESULT_NONE:%[0-9]+]] = enum $Optional<Array<Any>>, #Optional.none!enumelt
43
43
// CHECK: br [[FINISH]]([[RESULT_NONE]] : $Optional<Array<Any>>)
44
44
45
- // CHECK: [[FINISH]]([[RESULT:%[0-9]+]] : $Optional<Array<Any>>):
45
+ // CHECK: [[FINISH]]([[RESULT:%[0-9]+]] : @owned $Optional<Array<Any>>):
46
46
// CHECK: end_borrow [[BORROWED_ARG]] from [[ARG]]
47
47
// CHECK: destroy_value [[ARG]] : $Test
48
48
// CHECK: return [[RESULT]] : $Optional<Array<Any>>
@@ -51,13 +51,13 @@ func testNullable(_ obj: Test) -> [Any]? {
51
51
52
52
// CHECK-LABEL: sil hidden @_T020objc_bridged_results19testNullUnspecifiedSQySayypGGSo4TestCF
53
53
func testNullUnspecified( _ obj: Test ) -> [ Any ] ! {
54
- // CHECK: bb0([[ARG:%.*]] : $Test):
54
+ // CHECK: bb0([[ARG:%.*]] : @owned $Test):
55
55
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
56
56
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $Test, #Test.nullUnspecifiedArray!getter.1.foreign : (Test) -> () -> [Any]!, $@convention(objc_method) (Test) -> @autoreleased Optional<NSArray>
57
57
// CHECK: [[COCOA_VAL:%[0-9]+]] = apply [[METHOD]]([[BORROWED_ARG]]) : $@convention(objc_method) (Test) -> @autoreleased Optional<NSArray>
58
58
// CHECK: switch_enum [[COCOA_VAL]] : $Optional<NSArray>, case #Optional.some!enumelt.1: [[CASE_NON_NIL:bb[0-9]+]], case #Optional.none!enumelt: [[CASE_NIL:bb[0-9]+]]
59
59
60
- // CHECK: [[CASE_NON_NIL]]([[COCOA_VAL_NON_NIL:%.*]] : $NSArray):
60
+ // CHECK: [[CASE_NON_NIL]]([[COCOA_VAL_NON_NIL:%.*]] : @owned $NSArray):
61
61
// CHECK-NOT: unchecked_enum_data
62
62
// CHECK: [[CONVERT:%[0-9]+]] = function_ref @_T0Sa10FoundationE36_unconditionallyBridgeFromObjectiveCSayxGSo7NSArrayCSgFZ
63
63
// CHECK: [[COCOA_SOME_VAL:%[0-9]+]] = enum $Optional<NSArray>, #Optional.some!enumelt.1, [[COCOA_VAL_NON_NIL]]
@@ -70,7 +70,7 @@ func testNullUnspecified(_ obj: Test) -> [Any]! {
70
70
// CHECK: [[RESULT_NONE:%[0-9]+]] = enum $Optional<Array<Any>>, #Optional.none!enumelt
71
71
// CHECK: br [[FINISH]]([[RESULT_NONE]] : $Optional<Array<Any>>)
72
72
73
- // CHECK: [[FINISH]]([[RESULT:%[0-9]+]] : $Optional<Array<Any>>):
73
+ // CHECK: [[FINISH]]([[RESULT:%[0-9]+]] : @owned $Optional<Array<Any>>):
74
74
// CHECK: end_borrow [[BORROWED_ARG]] from [[ARG]]
75
75
// CHECK: destroy_value [[ARG]] : $Test
76
76
// CHECK: return [[RESULT]] : $Optional<Array<Any>>
@@ -80,7 +80,7 @@ func testNullUnspecified(_ obj: Test) -> [Any]! {
80
80
81
81
// CHECK-LABEL: sil hidden @_T020objc_bridged_results21testNonnullDictionarys0F0Vys11AnyHashableVypGSo4TestCF
82
82
func testNonnullDictionary( _ obj: Test ) -> [ AnyHashable : Any ] {
83
- // CHECK: bb0([[ARG:%.*]] : $Test):
83
+ // CHECK: bb0([[ARG:%.*]] : @owned $Test):
84
84
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
85
85
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $Test, #Test.nonnullDictionary!getter.1.foreign : (Test) -> () -> [AnyHashable : Any], $@convention(objc_method) (Test) -> @autoreleased Optional<NSDictionary>
86
86
// CHECK: [[COCOA_VAL:%[0-9]+]] = apply [[METHOD]]([[BORROWED_ARG]]) : $@convention(objc_method) (Test) -> @autoreleased Optional<NSDictionary>
@@ -95,7 +95,7 @@ func testNonnullDictionary(_ obj: Test) -> [AnyHashable: Any] {
95
95
96
96
// CHECK-LABEL: sil hidden @_T020objc_bridged_results14testNonnullSets0F0Vys11AnyHashableVGSo4TestCF
97
97
func testNonnullSet( _ obj: Test ) -> Set < AnyHashable > {
98
- // CHECK: bb0([[ARG:%.*]] : $Test):
98
+ // CHECK: bb0([[ARG:%.*]] : @owned $Test):
99
99
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
100
100
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $Test, #Test.nonnullSet!getter.1.foreign : (Test) -> () -> Set<AnyHashable>, $@convention(objc_method) (Test) -> @autoreleased Optional<NSSet>
101
101
// CHECK: [[COCOA_VAL:%[0-9]+]] = apply [[METHOD]]([[BORROWED_ARG]]) : $@convention(objc_method) (Test) -> @autoreleased Optional<NSSet>
@@ -110,7 +110,7 @@ func testNonnullSet(_ obj: Test) -> Set<AnyHashable> {
110
110
111
111
// CHECK-LABEL: sil hidden @_T020objc_bridged_results17testNonnullStringSSSo4TestCF
112
112
func testNonnullString( _ obj: Test ) -> String {
113
- // CHECK: bb0([[ARG:%.*]] : $Test):
113
+ // CHECK: bb0([[ARG:%.*]] : @owned $Test):
114
114
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
115
115
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $Test, #Test.nonnullString!getter.1.foreign : (Test) -> () -> String, $@convention(objc_method) (Test) -> @autoreleased Optional<NSString>
116
116
// CHECK: [[COCOA_VAL:%[0-9]+]] = apply [[METHOD]]([[BORROWED_ARG]]) : $@convention(objc_method) (Test) -> @autoreleased Optional<NSString>
@@ -142,7 +142,7 @@ func testClassProp() -> String {
142
142
// not to crash trying to generate the thunk.
143
143
// CHECK-LABEL: sil hidden @_T020objc_bridged_results20testNonnullSubscriptSayypGSo4TestCF
144
144
func testNonnullSubscript( _ obj: Test ) -> [ Any ] {
145
- // CHECK: bb0([[ARG:%.*]] : $Test):
145
+ // CHECK: bb0([[ARG:%.*]] : @owned $Test):
146
146
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
147
147
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $Test, #Test.subscript!getter.1.foreign : (Test) -> (Int) -> [Any], $@convention(objc_method) (Int, Test) -> @autoreleased Optional<NSArray>
148
148
// CHECK: [[COCOA_VAL:%[0-9]+]] = apply [[METHOD]]({{%[0-9]+}}, [[BORROWED_ARG]]) : $@convention(objc_method) (Int, Test) -> @autoreleased Optional<NSArray>
@@ -158,7 +158,7 @@ func testNonnullSubscript(_ obj: Test) -> [Any] {
158
158
159
159
// CHECK-LABEL: sil hidden @_T020objc_bridged_results19testPerformSelectorySo8NSObjectCF
160
160
func testPerformSelector( _ obj: NSObject ) {
161
- // CHECK: bb0([[ARG:%.*]] : $NSObject):
161
+ // CHECK: bb0([[ARG:%.*]] : @owned $NSObject):
162
162
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
163
163
// CHECK: [[METHOD:%[0-9]+]] = class_method [volatile] [[BORROWED_ARG]] : $NSObject, #NSObject.perform!1.foreign
164
164
// CHECK: [[RESULT:%[0-9]+]] = apply [[METHOD]]({{%[0-9]+}}, {{%[0-9]+}}, [[BORROWED_ARG]])
0 commit comments