@@ -318,3 +318,36 @@ func testLocalCaptures() {
318
318
// expected-complete-and-sns-warning@-1 {{capture of 'ns' with non-sendable type 'NonSendable' in a `@Sendable` local function}}
319
319
}
320
320
}
321
+
322
+ func testPointersAreNotSendable( ) {
323
+ func testSendable< T: Sendable > ( _: T ) { }
324
+
325
+ func testUnsafePointer( ptr: UnsafePointer < Int > ,
326
+ mutablePtr: UnsafeMutablePointer < String > ) {
327
+ testSendable ( ptr) // expected-warning {{conformance of 'UnsafePointer<Pointee>' to 'Sendable' is unavailable}}
328
+ testSendable ( mutablePtr) // expected-warning {{conformance of 'UnsafeMutablePointer<Pointee>' to 'Sendable' is unavailable}}
329
+ }
330
+
331
+ func testRawPointer( ptr: UnsafeRawPointer ,
332
+ mutablePtr: UnsafeMutableRawPointer ) {
333
+ testSendable ( ptr) // expected-warning {{conformance of 'UnsafeRawPointer' to 'Sendable' is unavailable}}
334
+ testSendable ( mutablePtr) // expected-warning {{conformance of 'UnsafeMutableRawPointer' to 'Sendable' is unavailable}}
335
+ }
336
+
337
+ func testOpaqueAndCPointers( opaquePtr: OpaquePointer , cPtr: CVaListPointer , autoReleasePtr: AutoreleasingUnsafeMutablePointer < Int > ) {
338
+ testSendable ( opaquePtr) // expected-warning {{conformance of 'OpaquePointer' to 'Sendable' is unavailable}}
339
+ testSendable ( cPtr) // expected-warning {{conformance of 'CVaListPointer' to 'Sendable' is unavailable}}
340
+ testSendable ( autoReleasePtr) // expected-warning {{conformance of 'AutoreleasingUnsafeMutablePointer<Pointee>' to 'Sendable' is unavailable}}
341
+ }
342
+
343
+ func testBufferPointers( buffer: UnsafeBufferPointer < Int > , mutableBuffer: UnsafeMutableBufferPointer < Int > ,
344
+ rawBuffer: UnsafeRawBufferPointer , rawMutableBuffer: UnsafeMutableRawBufferPointer ) {
345
+ testSendable ( buffer) // expected-warning {{conformance of 'UnsafeBufferPointer<Element>' to 'Sendable' is unavailable}}
346
+ testSendable ( mutableBuffer) // expected-warning {{conformance of 'UnsafeMutableBufferPointer<Element>' to 'Sendable' is unavailable}}
347
+ testSendable ( buffer. makeIterator ( ) ) // expected-warning {{conformance of 'UnsafeBufferPointer<Element>.Iterator' to 'Sendable' is unavailable}}
348
+ testSendable ( rawBuffer) // expected-warning {{conformance of 'UnsafeRawBufferPointer' to 'Sendable' is unavailable}}
349
+ testSendable ( rawBuffer. makeIterator ( ) ) // expected-warning {{conformance of 'UnsafeRawBufferPointer.Iterator' to 'Sendable' is unavailable}}
350
+ testSendable ( rawMutableBuffer) // expected-warning {{conformance of 'UnsafeMutableRawBufferPointer' to 'Sendable' is unavailable}}
351
+ testSendable ( rawMutableBuffer. makeIterator ( ) ) // expected-warning {{conformance of 'UnsafeRawBufferPointer.Iterator' to 'Sendable' is unavailable}}
352
+ }
353
+ }
0 commit comments