Skip to content

Commit f1b34b1

Browse files
committed
Make SKD{Request,Response}{Dictionary,Array} Sendable
1 parent 42140c5 commit f1b34b1

File tree

5 files changed

+14
-17
lines changed

5 files changed

+14
-17
lines changed

Sources/SourceKitD/SKDRequestArray.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ extension SourceKitD {
3131
}
3232
}
3333

34-
public final class SKDRequestArray {
35-
public let array: sourcekitd_api_object_t
36-
public let sourcekitd: SourceKitD
34+
public final class SKDRequestArray: Sendable {
35+
nonisolated(unsafe) let array: sourcekitd_api_object_t
36+
private let sourcekitd: SourceKitD
3737

3838
public init(_ array: sourcekitd_api_object_t? = nil, sourcekitd: SourceKitD) {
3939
self.array = array ?? sourcekitd.api.request_array_create(nil, 0)!

Sources/SourceKitD/SKDRequestDictionary.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ extension SourceKitD {
4949
}
5050
}
5151

52-
public final class SKDRequestDictionary {
53-
public let dict: sourcekitd_api_object_t
54-
public let sourcekitd: SourceKitD
52+
public final class SKDRequestDictionary: Sendable {
53+
nonisolated(unsafe) let dict: sourcekitd_api_object_t
54+
private let sourcekitd: SourceKitD
5555

5656
public init(_ dict: sourcekitd_api_object_t? = nil, sourcekitd: SourceKitD) {
5757
self.dict = dict ?? sourcekitd.api.request_dictionary_create(nil, nil, 0)!

Sources/SourceKitD/SKDResponse.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,8 @@ import CRT
2222
#endif
2323

2424
public final class SKDResponse: Sendable {
25-
/// - Note: `sourcekitd_api_response_t` is a typedef for `void *`, so we can't mark it as sendable. But we know that
26-
/// it stays alive until we deinit this `SKDResponse`. We also require that only a single `SKDResponse` may manage
27-
/// the `sourcekitd_api_response_t`, so raw response cannot be modified or disposed in any other way.
28-
private nonisolated(unsafe) let response: sourcekitd_api_response_t
29-
public let sourcekitd: SourceKitD
25+
private nonisolated let response: sourcekitd_api_response_t
26+
let sourcekitd: SourceKitD
3027

3128
/// Creates a new `SKDResponse` that exclusively manages the raw `sourcekitd_api_response_t`.
3229
///

Sources/SourceKitD/SKDResponseArray.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ import Musl
2020
import CRT
2121
#endif
2222

23-
public final class SKDResponseArray {
24-
public let array: sourcekitd_api_variant_t
25-
let resp: SKDResponse
23+
public final class SKDResponseArray: Sendable {
24+
private let array: sourcekitd_api_variant_t
25+
private let resp: SKDResponse
2626

2727
public var sourcekitd: SourceKitD { return resp.sourcekitd }
2828

Sources/SourceKitD/SKDResponseDictionary.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ import Musl
2020
import CRT
2121
#endif
2222

23-
public final class SKDResponseDictionary {
24-
public let dict: sourcekitd_api_variant_t
25-
let resp: SKDResponse
23+
public final class SKDResponseDictionary: Sendable {
24+
private let dict: sourcekitd_api_variant_t
25+
private let resp: SKDResponse
2626

2727
public var sourcekitd: SourceKitD { return resp.sourcekitd }
2828

0 commit comments

Comments
 (0)