1
- // RUN: %target-swift-emit-silgen -module-name objc_preconcurrency -sdk %S/Inputs -I %S/Inputs -enable-source-import %s -disable-objc-attr-requires-foundation-module | %FileCheck %s
1
+ // RUN: %target-swift-emit-silgen -module-name objc_preconcurrency -sdk %S/Inputs -I %S/Inputs -enable-source-import -import-objc-header %S/Inputs/objc_preconcurrency.h %s -disable-objc-attr-requires-foundation-module | %FileCheck %s
2
2
3
3
// REQUIRES: objc_interop
4
4
5
5
@objc protocol P {
6
6
@preconcurrency @objc optional func f( _ completionHandler: @Sendable @escaping ( ) -> Void )
7
+ @preconcurrency var sendyHandler : @Sendable ( ) -> Void { get set }
7
8
}
8
9
9
10
// CHECK-LABEL: sil hidden [ossa] @$s19objc_preconcurrency19testDynamicDispatch1p17completionHandleryAA1P_p_yyctF
@@ -16,3 +17,29 @@ func testDynamicDispatch(p: P, completionHandler: @escaping () -> Void) {
16
17
// CHECK: bb{{[0-9]+}}(%{{[0-9]+}} : $@convention(objc_method) (@convention(block) @Sendable () -> (), @opened
17
18
let _ = p. f
18
19
}
20
+
21
+ // CHECK-LABEL: sil hidden [ossa] @$s19objc_preconcurrency21testOptionalVarAccessyySo12NSTouchGrassCF
22
+ // CHECK: unchecked_addr_cast {{.*}} : $*Optional<@Sendable @callee_guaranteed () -> ()> to $*Optional<@callee_guaranteed () -> ()>
23
+ // CHECK: } // end sil function '$s19objc_preconcurrency21testOptionalVarAccessyySo12NSTouchGrassCF'
24
+ func testOptionalVarAccess( _ grass: NSTouchGrass ) {
25
+ grass. cancellationHandler ? ( )
26
+ }
27
+
28
+ func modify( _ v: inout ( ) -> Void ) {
29
+ v = { }
30
+ }
31
+
32
+ // CHECK-LABEL: sil hidden [ossa] @$s19objc_preconcurrency15testInoutAccessyySo12NSTouchGrassCF
33
+ // CHECK: unchecked_addr_cast {{.*}} : $*@Sendable @callee_guaranteed () -> () to $*@callee_guaranteed () -> ()
34
+ // CHECK: } // end sil function '$s19objc_preconcurrency15testInoutAccessyySo12NSTouchGrassCF'
35
+ func testInoutAccess( _ grass: NSTouchGrass ) {
36
+ modify ( & grass. exceptionHandler)
37
+ }
38
+
39
+
40
+ // CHECK-LABEL: sil hidden [ossa] @$s19objc_preconcurrency21testProtocolVarAccess1pyAA1P_p_tF
41
+ // CHECK: unchecked_addr_cast {{.*}} : $*@Sendable @callee_guaranteed () -> () to $*@callee_guaranteed () -> ()
42
+ // CHECK: } // end sil function '$s19objc_preconcurrency21testProtocolVarAccess1pyAA1P_p_tF'
43
+ func testProtocolVarAccess( p: P ) {
44
+ modify ( & p. sendyHandler)
45
+ }
0 commit comments