1- // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -I %S/Inputs/custom-modules %s -verify -verify-additional-file %swift_src_root/test/Inputs/clang-importer-sdk/usr/include/ObjCConcurrency.h -warn-concurrency
1+ // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -I %S/Inputs/custom-modules %s -verify -verify-additional-file %swift_src_root/test/Inputs/clang-importer-sdk/usr/include/ObjCConcurrency.h -warn-concurrency -parse-as-library
22
33// REQUIRES: objc_interop
44// REQUIRES: concurrency
55import Foundation
66import ObjCConcurrency
77// expected-remark@-1{{add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjCConcurrency'}}
88
9- if #available( SwiftStdlib 5 . 5 , * ) {
10-
9+ @available ( SwiftStdlib 5 . 5 , * )
1110@MainActor func onlyOnMainActor( ) { }
1211
12+ @available ( SwiftStdlib 5 . 5 , * )
1313func testSlowServer( slowServer: SlowServer ) async throws {
1414 let _: Int = await slowServer. doSomethingSlow ( " mail " )
1515 let _: Bool = await slowServer. checkAvailability ( )
@@ -62,6 +62,7 @@ func testSlowServer(slowServer: SlowServer) async throws {
6262 _ = await slowServer. runOnMainThread ( )
6363}
6464
65+ @available ( SwiftStdlib 5 . 5 , * )
6566func testSlowServerSynchronous( slowServer: SlowServer ) {
6667 // synchronous version
6768 let _: Int = slowServer. doSomethingConflicted ( " thinking " )
@@ -88,6 +89,7 @@ func testSlowServerSynchronous(slowServer: SlowServer) {
8889 let _: Int = slowServer. overridableButRunsOnMainThread // expected-error{{cannot convert value of type '(((String) -> Void)?) -> Void' to specified type 'Int'}}
8990}
9091
92+ @available ( SwiftStdlib 5 . 5 , * )
9193func testSlowServerOldSchool( slowServer: SlowServer ) {
9294 slowServer. doSomethingSlow ( " mail " ) { i in
9395 _ = i
@@ -96,6 +98,7 @@ func testSlowServerOldSchool(slowServer: SlowServer) {
9698 _ = slowServer. allOperations
9799}
98100
101+ @available ( SwiftStdlib 5 . 5 , * )
99102func testSendable( fn: ( ) -> Void ) {
100103 doSomethingConcurrently ( fn) // okay, due to implicit @preconcurrency
101104 doSomethingConcurrentlyButUnsafe ( fn) // okay, @Sendable not part of the type
@@ -107,6 +110,7 @@ func testSendable(fn: () -> Void) {
107110 }
108111}
109112
113+ @available ( SwiftStdlib 5 . 5 , * )
110114func testSendableInAsync( ) async {
111115 var x = 17
112116 doSomethingConcurrentlyButUnsafe {
@@ -115,6 +119,7 @@ func testSendableInAsync() async {
115119 print ( x)
116120}
117121
122+ @available ( SwiftStdlib 5 . 5 , * )
118123func testSendableAttrs(
119124 sendableClass: SendableClass , nonSendableClass: NonSendableClass ,
120125 sendableEnum: SendableEnum , nonSendableEnum: NonSendableEnum ,
@@ -150,8 +155,10 @@ func testSendableAttrs(
150155}
151156
152157// Check import of attributes
158+ @available ( SwiftStdlib 5 . 5 , * )
153159func globalAsync( ) async { }
154160
161+ @available ( SwiftStdlib 5 . 5 , * )
155162actor MySubclassCheckingSwiftAttributes : ProtocolWithSwiftAttributes {
156163 func syncMethod( ) { } // expected-note 2{{calls to instance method 'syncMethod()' from outside of its actor context are implicitly asynchronous}}
157164
@@ -177,13 +184,16 @@ func testCV(r: NSRange) {
177184
178185// Global actor (unsafe) isolation.
179186
187+ @available ( SwiftStdlib 5 . 5 , * )
180188actor SomeActor { }
181189
190+ @available ( SwiftStdlib 5 . 5 , * )
182191@globalActor
183192struct SomeGlobalActor {
184193 static let shared = SomeActor ( )
185194}
186195
196+ @available ( SwiftStdlib 5 . 5 , * )
187197class MyButton : NXButton {
188198 @MainActor func testMain( ) {
189199 onButtonPress ( ) // okay
@@ -198,17 +208,19 @@ class MyButton : NXButton {
198208 }
199209}
200210
211+ @available ( SwiftStdlib 5 . 5 , * )
201212func testButtons( mb: MyButton ) {
202213 mb. onButtonPress ( )
203214}
204215
205-
216+ @ available ( SwiftStdlib 5 . 5 , * )
206217func testMirrored( instance: ClassWithAsync ) async {
207218 await instance. instanceAsync ( )
208219 await instance. protocolMethod ( )
209220 await instance. customAsyncName ( )
210221}
211222
223+ @available ( SwiftStdlib 5 . 5 , * )
212224@MainActor class MyToolbarButton : NXButton {
213225 var count = 5
214226
@@ -220,6 +232,7 @@ func testMirrored(instance: ClassWithAsync) async {
220232 }
221233}
222234
235+ @available ( SwiftStdlib 5 . 5 , * )
223236@MainActor class MyView : NXView {
224237 func f( ) {
225238 Task {
@@ -231,13 +244,17 @@ func testMirrored(instance: ClassWithAsync) async {
231244}
232245
233246
247+
248+ @available ( SwiftStdlib 5 . 5 , * )
234249@MainActor func mainActorFn( ) { }
250+ @available ( SwiftStdlib 5 . 5 , * )
235251@SomeGlobalActor func sgActorFn( ) { }
236252
237253// Check inferred isolation for overridden decls from ObjC.
238254// Note that even if the override is not present, it
239255// can have an affect. -- rdar://87217618 / SR-15694
240256@MainActor
257+ @available ( SwiftStdlib 5 . 5 , * )
241258class FooFrame : PictureFrame {
242259 init ( ) {
243260 super. init ( size: 0 )
@@ -252,6 +269,7 @@ class FooFrame: PictureFrame {
252269 }
253270}
254271
272+ @available ( SwiftStdlib 5 . 5 , * )
255273class BarFrame : PictureFrame {
256274 init ( ) {
257275 super. init ( size: 0 )
@@ -266,6 +284,7 @@ class BarFrame: PictureFrame {
266284 }
267285}
268286
287+ @available ( SwiftStdlib 5 . 5 , * )
269288@SomeGlobalActor
270289class BazFrame : NotIsolatedPictureFrame {
271290 init ( ) {
@@ -285,6 +304,7 @@ class BazFrame: NotIsolatedPictureFrame {
285304class BazFrameIso : PictureFrame { // expected-error {{global actor 'SomeGlobalActor'-isolated class 'BazFrameIso' has different actor isolation from main actor-isolated superclass 'PictureFrame'}}
286305}
287306
307+ @available ( SwiftStdlib 5 . 5 , * )
288308func check( ) async {
289309 _ = await BarFrame ( )
290310 _ = await FooFrame ( )
@@ -347,5 +367,3 @@ func testSender(
347367 sender. sendPtr ( ptr)
348368 sender. sendStringArray ( stringArray)
349369}
350-
351- } // SwiftStdlib 5.5
0 commit comments