Skip to content

Commit 0d316db

Browse files
committed
Create a SwiftExtensions module
This allows us to share common Swift utility functions between SourceKit-LSP and LSPLogging.
1 parent e4d8331 commit 0d316db

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+69
-8
lines changed

Package.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ let package = Package(
8080
"SKSupport",
8181
"SourceKitD",
8282
"SourceKitLSP",
83+
"SwiftExtensions",
8384
.product(name: "ArgumentParser", package: "swift-argument-parser"),
8485
.product(name: "SwiftIDEUtils", package: "swift-syntax"),
8586
.product(name: "SwiftSyntax", package: "swift-syntax"),
@@ -183,6 +184,7 @@ let package = Package(
183184
"LanguageServerProtocol",
184185
"LanguageServerProtocolJSONRPC",
185186
"SKSupport",
187+
"SwiftExtensions",
186188
]
187189
),
188190

@@ -195,6 +197,7 @@ let package = Package(
195197
"LanguageServerProtocol",
196198
"LSPLogging",
197199
"SKCore",
200+
"SwiftExtensions",
198201
.product(name: "IndexStoreDB", package: "indexstore-db"),
199202
],
200203
exclude: ["CMakeLists.txt"]
@@ -221,6 +224,7 @@ let package = Package(
221224
"LSPLogging",
222225
"SKSupport",
223226
"SourceKitD",
227+
"SwiftExtensions",
224228
.product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"),
225229
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
226230
],
@@ -246,6 +250,7 @@ let package = Package(
246250
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
247251
"LanguageServerProtocol",
248252
"LSPLogging",
253+
"SwiftExtensions",
249254
],
250255
exclude: ["CMakeLists.txt"],
251256
swiftSettings: [.enableExperimentalFeature("StrictConcurrency")]
@@ -257,6 +262,7 @@ let package = Package(
257262
"LSPTestSupport",
258263
"SKSupport",
259264
"SKTestSupport",
265+
"SwiftExtensions",
260266
]
261267
),
262268

@@ -269,6 +275,7 @@ let package = Package(
269275
"LanguageServerProtocol",
270276
"LSPLogging",
271277
"SKCore",
278+
"SwiftExtensions",
272279
.product(name: "SwiftPM-auto", package: "swift-package-manager"),
273280
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
274281
],
@@ -302,6 +309,7 @@ let package = Package(
302309
"LSPLogging",
303310
"SKCore",
304311
"SourceKitLSP",
312+
"SwiftExtensions",
305313
.product(name: "ISDBTestSupport", package: "indexstore-db"),
306314
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
307315
],
@@ -319,6 +327,7 @@ let package = Package(
319327
"Csourcekitd",
320328
"LSPLogging",
321329
"SKSupport",
330+
"SwiftExtensions",
322331
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
323332
],
324333
exclude: ["CMakeLists.txt", "sourcekitd_uids.swift.gyb"],
@@ -331,6 +340,7 @@ let package = Package(
331340
"SourceKitD",
332341
"SKCore",
333342
"SKTestSupport",
343+
"SwiftExtensions",
334344
]
335345
),
336346

@@ -349,6 +359,7 @@ let package = Package(
349359
"SKSupport",
350360
"SKSwiftPMWorkspace",
351361
"SourceKitD",
362+
"SwiftExtensions",
352363
.product(name: "IndexStoreDB", package: "indexstore-db"),
353364
.product(name: "SwiftBasicFormat", package: "swift-syntax"),
354365
.product(name: "SwiftDiagnostics", package: "swift-syntax"),
@@ -387,6 +398,13 @@ let package = Package(
387398
.product(name: "SwiftSyntaxMacros", package: "swift-syntax"),
388399
]
389400
),
401+
402+
// MARK: SwiftExtensions
403+
404+
.target(
405+
name: "SwiftExtensions",
406+
exclude: ["CMakeLists.txt"]
407+
),
390408
]
391409
)
392410

Sources/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ add_subdirectory(SKSwiftPMWorkspace)
1313
add_subdirectory(SourceKitLSP)
1414
add_subdirectory(SourceKitD)
1515
add_subdirectory(sourcekit-lsp)
16+
add_subdirectory(SwiftExtensions)

Sources/Diagnose/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ target_link_libraries(Diagnose PUBLIC
2929
LSPLogging
3030
SKCore
3131
SourceKitD
32+
SwiftExtensions
3233
ArgumentParser
3334
SwiftSyntax::SwiftIDEUtils
3435
SwiftSyntax::SwiftSyntax

Sources/Diagnose/IndexCommand.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import LanguageServerProtocol
1717
import SKCore
1818
import SKSupport
1919
import SourceKitLSP
20+
import SwiftExtensions
2021

2122
import struct TSCBasic.AbsolutePath
2223
import class TSCBasic.Process

Sources/LSPTestSupport/TestJSONRPCConnection.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import InProcessClient
1414
import LanguageServerProtocol
1515
import LanguageServerProtocolJSONRPC
1616
import SKSupport
17+
import SwiftExtensions
1718
import XCTest
1819

1920
import class Foundation.Pipe

Sources/SKCore/BuildServerBuildSystem.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import LSPLogging
1616
import LanguageServerProtocol
1717
import LanguageServerProtocolJSONRPC
1818
import SKSupport
19+
import SwiftExtensions
1920

2021
import struct TSCBasic.AbsolutePath
2122
import protocol TSCBasic.FileSystem

Sources/SKCore/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,6 @@ target_link_libraries(SKCore PUBLIC
2929
LSPLogging
3030
SKSupport
3131
SourceKitD
32+
SwiftExtensions
3233
PackageModel
3334
TSCBasic)

Sources/SKCore/TaskScheduler.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import CAtomics
1414
import Foundation
1515
import LSPLogging
1616
import SKSupport
17+
import SwiftExtensions
1718

1819
/// See comment on ``TaskDescriptionProtocol/dependencies(to:taskPriority:)``
1920
public enum TaskDependencyAction<TaskDescription: TaskDescriptionProtocol> {

Sources/SKCore/Toolchain.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import LSPLogging
1414
import LanguageServerProtocol
1515
import RegexBuilder
1616
import SKSupport
17+
import SwiftExtensions
1718

1819
import enum PackageLoading.Platform
1920
import struct TSCBasic.AbsolutePath

Sources/SKSupport/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11

22
add_library(SKSupport STATIC
3-
AsyncQueue.swift
4-
AsyncUtils.swift
53
BuildConfiguration.swift
64
ByteString.swift
7-
Collection+Only.swift
8-
Collection+PartitionIntoBatches.swift
95
Connection+Send.swift
106
dlopen.swift
117
DocumentURI+CustomLogStringConvertible.swift
@@ -16,16 +12,14 @@ add_library(SKSupport STATIC
1612
Process+WaitUntilExitWithCancellation.swift
1713
Random.swift
1814
Result.swift
19-
Sequence+AsyncMap.swift
2015
SwitchableProcessResultExitStatus.swift
21-
Task+WithPriorityChangedHandler.swift
22-
ThreadSafeBox.swift
2316
WorkspaceType.swift
2417
)
2518
set_target_properties(SKSupport PROPERTIES
2619
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY})
2720
target_link_libraries(SKSupport PRIVATE
2821
LanguageServerProtocol
2922
LSPLogging
23+
SwiftExtensions
3024
TSCBasic
3125
$<$<NOT:$<PLATFORM_ID:Darwin>>:Foundation>)

Sources/SKSupport/Connection+Send.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import LanguageServerProtocol
14+
import SwiftExtensions
1415

1516
extension Connection {
1617
/// Send the given request to the connection and await its result.

Sources/SKSupport/PipeAsStringHandler.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import Foundation
14+
import SwiftUtilities
1415

1516
/// Gathers data from a stdout or stderr pipe. When it has accumulated a full line, calls the handler to handle the
1617
/// string.

Sources/SKSwiftPMWorkspace/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ target_link_libraries(SKSwiftPMWorkspace PRIVATE
88
LanguageServerProtocol
99
LSPLogging
1010
SKCore
11+
SwiftExtensions
1112
TSCBasic)
1213
target_link_libraries(SKSwiftPMWorkspace PUBLIC
1314
Build

Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import SKCore
2525
import SKSupport
2626
import SourceControl
2727
import SourceKitLSPAPI
28+
import SwiftExtensions
2829
import Workspace
2930

3031
import struct Basics.AbsolutePath
@@ -113,7 +114,9 @@ public actor SwiftPMBuildSystem {
113114
private let fileSystem: FileSystem
114115
private let toolchainRegistry: ToolchainRegistry
115116

116-
private let swiftBuildSupportsPrepareForIndexingTask = SKSupport.ThreadSafeBox<Task<Bool, Never>?>(initialValue: nil)
117+
private let swiftBuildSupportsPrepareForIndexingTask = SwiftExtensions.ThreadSafeBox<Task<Bool, Never>?>(
118+
initialValue: nil
119+
)
117120

118121
private var fileToTarget: [DocumentURI: SwiftBuildTarget] = [:]
119122
private var sourceDirToTarget: [DocumentURI: SwiftBuildTarget] = [:]

Sources/SKTestSupport/TestSourceKitLSPClient.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import LanguageServerProtocolJSONRPC
1919
@_spi(Testing) import SKCore
2020
import SKSupport
2121
import SourceKitLSP
22+
import SwiftExtensions
2223
import SwiftSyntax
2324
import XCTest
2425

Sources/SemanticIndex/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ set_target_properties(SemanticIndex PROPERTIES
1414
target_link_libraries(SemanticIndex PRIVATE
1515
LSPLogging
1616
SKCore
17+
SwiftExtensions
1718
IndexStoreDB
1819
$<$<NOT:$<PLATFORM_ID:Darwin>>:Foundation>)

Sources/SemanticIndex/UpdateIndexStoreTaskDescription.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import LSPLogging
1616
import LanguageServerProtocol
1717
import SKCore
1818
import SKSupport
19+
import SwiftExtensions
1920

2021
import struct TSCBasic.AbsolutePath
2122
import class TSCBasic.Process

Sources/SourceKitD/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ target_link_libraries(SourceKitD PUBLIC
1717
target_link_libraries(SourceKitD PRIVATE
1818
LSPLogging
1919
SKSupport
20+
SwiftExtensions
2021
TSCBasic
2122
$<$<NOT:$<PLATFORM_ID:Darwin>>:Foundation>)

Sources/SourceKitD/DynamicallyLoadedSourceKitD.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import Foundation
1414
import LSPLogging
1515
import SKSupport
16+
import SwiftExtensions
1617

1718
import struct TSCBasic.AbsolutePath
1819

Sources/SourceKitD/SourceKitD.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import Dispatch
1515
import Foundation
1616
import SKSupport
17+
import SwiftExtensions
1718

1819
#if compiler(>=6)
1920
extension sourcekitd_api_request_handle_t: @retroactive @unchecked Sendable {}

Sources/SourceKitLSP/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ target_link_libraries(SourceKitLSP PUBLIC
7474
SKSupport
7575
SKSwiftPMWorkspace
7676
SourceKitD
77+
SwiftExtensions
7778
IndexStoreDB
7879
SwiftSyntax::SwiftBasicFormat
7980
SwiftSyntax::SwiftDiagnostics

Sources/SourceKitLSP/Clang/ClangLanguageService.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import LanguageServerProtocol
1616
import LanguageServerProtocolJSONRPC
1717
import SKCore
1818
import SKSupport
19+
import SwiftExtensions
1920

2021
import struct TSCBasic.AbsolutePath
2122

Sources/SourceKitLSP/IndexProgressManager.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import LanguageServerProtocol
1515
import SKCore
1616
import SKSupport
1717
import SemanticIndex
18+
import SwiftExtensions
1819

1920
/// Listens for index status updates from `SemanticIndexManagers`. From that information, it manages a
2021
/// `WorkDoneProgress` that communicates the index progress to the editor.

Sources/SourceKitLSP/MessageHandlingDependencyTracker.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import LSPLogging
1414
import LanguageServerProtocol
1515
import SKSupport
16+
import SwiftExtensions
1617

1718
/// A lightweight way of describing tasks that are created from handling LSP
1819
/// requests or notifications for the purpose of dependency tracking.

Sources/SourceKitLSP/SourceKitIndexDelegate.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import IndexStoreDB
1515
import LSPLogging
1616
import SKCore
1717
import SKSupport
18+
import SwiftExtensions
1819

1920
/// `IndexDelegate` for the SourceKit workspace.
2021
///

Sources/SourceKitLSP/SourceKitLSPServer.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import SKSupport
2323
import SKSwiftPMWorkspace
2424
import SemanticIndex
2525
import SourceKitD
26+
import SwiftExtensions
2627

2728
import struct PackageModel.BuildFlags
2829
import struct TSCBasic.AbsolutePath

Sources/SourceKitLSP/Swift/CodeCompletionSession.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import LSPLogging
1515
import LanguageServerProtocol
1616
import SKSupport
1717
import SourceKitD
18+
import SwiftExtensions
1819
import SwiftParser
1920
@_spi(SourceKitLSP) import SwiftRefactor
2021
import SwiftSyntax

Sources/SourceKitLSP/Swift/DiagnosticReportManager.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import LSPLogging
1414
import LanguageServerProtocol
1515
import SKSupport
1616
import SourceKitD
17+
import SwiftExtensions
1718
import SwiftParserDiagnostics
1819

1920
actor DiagnosticReportManager {

Sources/SourceKitLSP/Swift/SwiftLanguageService.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import SKCore
1919
import SKSupport
2020
import SemanticIndex
2121
import SourceKitD
22+
import SwiftExtensions
2223
import SwiftParser
2324
import SwiftParserDiagnostics
2425
import SwiftSyntax

Sources/SourceKitLSP/Swift/SyntacticTestIndex.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import Foundation
1414
import LSPLogging
1515
import LanguageServerProtocol
1616
import SKSupport
17+
import SwiftExtensions
1718

1819
/// Task metadata for `SyntacticTestIndexer.indexingQueue`
1920
fileprivate enum TaskMetadata: DependencyTracker, Equatable {

Sources/SourceKitLSP/WorkDoneProgressManager.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import Foundation
1414
import LanguageServerProtocol
1515
import SKSupport
16+
import SwiftExtensions
1617

1718
/// Represents a single `WorkDoneProgress` task that gets communicated with the client.
1819
///

Sources/SourceKitLSP/WorkDoneProgressState.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import LSPLogging
1414
import LanguageServerProtocol
1515
import SKSupport
16+
import SwiftExtensions
1617

1718
/// Keeps track of the state to send work done progress updates to the client
1819
final actor WorkDoneProgressState {

Sources/SourceKitLSP/Workspace.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import LanguageServerProtocol
1616
import SKCore
1717
import SKSupport
1818
import SemanticIndex
19+
import SwiftExtensions
1920

2021
import struct TSCBasic.AbsolutePath
2122
import struct TSCBasic.RelativePath
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
2+
add_library(SwiftExtensions STATIC
3+
AsyncQueue.swift
4+
AsyncUtils.swift
5+
Collection+Only.swift
6+
Collection+PartitionIntoBatches.swift
7+
Sequence+AsyncMap.swift
8+
Task+WithPriorityChangedHandler.swift
9+
ThreadSafeBox.swift
10+
)
11+
set_target_properties(SwiftExtensions PROPERTIES
12+
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY})
13+
target_link_libraries(SwiftExtensions PRIVATE
14+
$<$<NOT:$<PLATFORM_ID:Darwin>>:Foundation>)

0 commit comments

Comments
 (0)