Skip to content

Commit 283c524

Browse files
authored
Merge pull request #1818 from ahoppen/split-sksupport
Split `SKSupport` into multiple modules
2 parents 8ba80a0 + 8c2def8 commit 283c524

File tree

104 files changed

+349
-223
lines changed

Some content is hidden

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

104 files changed

+349
-223
lines changed

Contributor Documentation/Modules.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ This should be the dedicated entry point for clients that want to run SourceKit-
3737

3838
Swift types to represent the [Language Server Protocol (LSP) specification, version 3.17](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/). These types should also be usable when implementing an LSP client and thus this module should not have any dependencies.
3939

40+
### LanguageServerProtocolExtensions
41+
42+
Extensions on top of `LanguageServerProtocol` and `LanguageServerProtocolJSONRPC` that might require other modules defined in sourcekit-lsp.
43+
4044
### LanguageServerProtocolJSONRPC
4145

4246
A connection to or from a SourceKit-LSP server. Since message parsing can fail, it needs to handle errors in some way and the design decision here is to use SKLogging, which hardcodes `org.swift.sourcekit-lsp` as the default logging subsystem and thus makes the module unsuitable for generic clients.
@@ -49,16 +53,13 @@ Contains the interface with which SourceKit-LSP queries the semantic index, addi
4953

5054
Types that are API-compatible with OSLog that allow logging to OSLog when building for Apple platforms and logging to stderr or files on non-Apple platforms. This should not be dependent on any LSP specific types and be portable to other packages.
5155

52-
### SKOptions
56+
### SKUtilities
5357

54-
Configuration options to change how SourceKit-LSP behaves, based on [Configuration files](../Documentation/Configuration%20File.md).
58+
Types that should be sharable by the different modules that implement SourceKit-LSP but that are not generic enough to fit into `SwiftExtensions` or that need to depend on `SKLogging` and thus can’t live in `SwiftExtensions`.
5559

56-
### SKSupport
60+
### SKOptions
5761

58-
Contains SourceKit-LSP-specific helper functions. These fall into three different categories:
59-
- Extensions on top of `swift-tools-support-core`
60-
- Functionality that can only be implemented by combining two lower-level modules that don't have a shared dependency, like `SKLogging` + `LanguageServerProtocol`
61-
- Types that should be sharable by the different modules that implement SourceKit-LSP but that are not generic enough to fit into `SwiftExtensions`, like `ExperimentalFeatures`.
62+
Configuration options to change how SourceKit-LSP behaves, based on [Configuration files](../Documentation/Configuration%20File.md).
6263

6364
### SKTestSupport
6465

@@ -83,3 +84,7 @@ Extensions to the Swift standard library and Foundation. Should not have any oth
8384
#### ToolchainRegistry
8485

8586
Discovers Swift toolchains on the system.
87+
88+
### TSCExtensions
89+
90+
Extensions on top of `swift-tools-support-core` that might integrate with modules from sourcekit-lsp.

Package.swift

Lines changed: 75 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ var targets: [Target] = [
3030
"BuildSystemIntegration",
3131
"Diagnose",
3232
"LanguageServerProtocol",
33+
"LanguageServerProtocolExtensions",
3334
"LanguageServerProtocolJSONRPC",
3435
"SKOptions",
35-
"SKSupport",
3636
"SourceKitLSP",
3737
"ToolchainRegistry",
3838
.product(name: "ArgumentParser", package: "swift-argument-parser"),
@@ -71,13 +71,15 @@ var targets: [Target] = [
7171
dependencies: [
7272
"BuildServerProtocol",
7373
"LanguageServerProtocol",
74+
"LanguageServerProtocolExtensions",
7475
"LanguageServerProtocolJSONRPC",
7576
"SKLogging",
7677
"SKOptions",
77-
"SKSupport",
78+
"SKUtilities",
7879
"SourceKitD",
7980
"SwiftExtensions",
8081
"ToolchainRegistry",
82+
"TSCExtensions",
8183
.product(name: "SwiftPM-auto", package: "swift-package-manager"),
8284
.product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"),
8385
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
@@ -128,13 +130,15 @@ var targets: [Target] = [
128130
dependencies: [
129131
"BuildSystemIntegration",
130132
"InProcessClient",
133+
"LanguageServerProtocolExtensions",
131134
"SKLogging",
132135
"SKOptions",
133-
"SKSupport",
136+
"SKUtilities",
134137
"SourceKitD",
135138
"SourceKitLSP",
136139
"SwiftExtensions",
137140
"ToolchainRegistry",
141+
"TSCExtensions",
138142
.product(name: "ArgumentParser", package: "swift-argument-parser"),
139143
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
140144
] + swiftSyntaxDependencies(["SwiftIDEUtils", "SwiftSyntax", "SwiftParser"]),
@@ -167,6 +171,7 @@ var targets: [Target] = [
167171
"SKOptions",
168172
"SourceKitLSP",
169173
"ToolchainRegistry",
174+
"TSCExtensions",
170175
],
171176
exclude: ["CMakeLists.txt"],
172177
swiftSettings: globalSwiftSettings
@@ -190,6 +195,22 @@ var targets: [Target] = [
190195
swiftSettings: globalSwiftSettings
191196
),
192197

198+
// MARK: LanguageServerProtocolExtensions
199+
200+
.target(
201+
name: "LanguageServerProtocolExtensions",
202+
dependencies: [
203+
"LanguageServerProtocol",
204+
"LanguageServerProtocolJSONRPC",
205+
"SKLogging",
206+
"SourceKitD",
207+
"SwiftExtensions",
208+
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
209+
],
210+
exclude: ["CMakeLists.txt"],
211+
swiftSettings: globalSwiftSettings
212+
),
213+
193214
// MARK: LanguageServerProtocolJSONRPC
194215

195216
.target(
@@ -222,6 +243,7 @@ var targets: [Target] = [
222243
"SKLogging",
223244
"SwiftExtensions",
224245
"ToolchainRegistry",
246+
"TSCExtensions",
225247
.product(name: "IndexStoreDB", package: "indexstore-db"),
226248
],
227249
exclude: ["CMakeLists.txt"],
@@ -265,37 +287,31 @@ var targets: [Target] = [
265287
name: "SKOptions",
266288
dependencies: [
267289
"LanguageServerProtocol",
290+
"LanguageServerProtocolExtensions",
268291
"SKLogging",
269-
"SKSupport",
270292
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
271293
],
272294
exclude: ["CMakeLists.txt"],
273295
swiftSettings: globalSwiftSettings
274296
),
275297

276-
// MARK: SKSupport
298+
// MARK: SKUtilities
277299

278300
.target(
279-
name: "SKSupport",
301+
name: "SKUtilities",
280302
dependencies: [
281-
"LanguageServerProtocol",
282-
"LanguageServerProtocolJSONRPC",
283303
"SKLogging",
284-
"SourceKitD",
285304
"SwiftExtensions",
286-
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
287305
],
288306
exclude: ["CMakeLists.txt"],
289307
swiftSettings: globalSwiftSettings
290308
),
291309

292310
.testTarget(
293-
name: "SKSupportTests",
311+
name: "SKUtilitiesTests",
294312
dependencies: [
295-
"SKLogging",
296-
"SKSupport",
313+
"SKUtilities",
297314
"SKTestSupport",
298-
"SwiftExtensions",
299315
],
300316
swiftSettings: globalSwiftSettings
301317
),
@@ -309,13 +325,15 @@ var targets: [Target] = [
309325
"CSKTestSupport",
310326
"InProcessClient",
311327
"LanguageServerProtocol",
328+
"LanguageServerProtocolExtensions",
312329
"LanguageServerProtocolJSONRPC",
313330
"SKLogging",
314331
"SKOptions",
315-
"SKSupport",
332+
"SKUtilities",
316333
"SourceKitLSP",
317334
"SwiftExtensions",
318335
"ToolchainRegistry",
336+
"TSCExtensions",
319337
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
320338
],
321339
resources: [.copy("INPUTS")],
@@ -356,14 +374,16 @@ var targets: [Target] = [
356374
"BuildServerProtocol",
357375
"BuildSystemIntegration",
358376
"LanguageServerProtocol",
377+
"LanguageServerProtocolExtensions",
359378
"LanguageServerProtocolJSONRPC",
360379
"SemanticIndex",
361380
"SKLogging",
362381
"SKOptions",
363-
"SKSupport",
382+
"SKUtilities",
364383
"SourceKitD",
365384
"SwiftExtensions",
366385
"ToolchainRegistry",
386+
"TSCExtensions",
367387
.product(name: "IndexStoreDB", package: "indexstore-db"),
368388
.product(name: "Crypto", package: "swift-crypto"),
369389
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
@@ -383,11 +403,12 @@ var targets: [Target] = [
383403
"BuildServerProtocol",
384404
"BuildSystemIntegration",
385405
"LanguageServerProtocol",
406+
"LanguageServerProtocolExtensions",
386407
"SemanticIndex",
387408
"SKLogging",
388409
"SKOptions",
389-
"SKSupport",
390410
"SKTestSupport",
411+
"SKUtilities",
391412
"SourceKitD",
392413
"SourceKitLSP",
393414
"ToolchainRegistry",
@@ -408,14 +429,26 @@ var targets: [Target] = [
408429
swiftSettings: globalSwiftSettings
409430
),
410431

432+
.testTarget(
433+
name: "SwiftExtensionsTests",
434+
dependencies: [
435+
"SKLogging",
436+
"SKTestSupport",
437+
"SwiftExtensions",
438+
],
439+
swiftSettings: globalSwiftSettings
440+
),
441+
411442
// MARK: ToolchainRegistry
412443

413444
.target(
414445
name: "ToolchainRegistry",
415446
dependencies: [
447+
"LanguageServerProtocolExtensions",
416448
"SKLogging",
417-
"SKSupport",
449+
"SKUtilities",
418450
"SwiftExtensions",
451+
"TSCExtensions",
419452
.product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"),
420453
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
421454
],
@@ -433,6 +466,30 @@ var targets: [Target] = [
433466
],
434467
swiftSettings: globalSwiftSettings
435468
),
469+
470+
// MARK: TSCExtensions
471+
472+
.target(
473+
name: "TSCExtensions",
474+
dependencies: [
475+
"SKLogging",
476+
"SwiftExtensions",
477+
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
478+
],
479+
exclude: ["CMakeLists.txt"],
480+
swiftSettings: globalSwiftSettings
481+
),
482+
483+
.testTarget(
484+
name: "TSCExtensionsTests",
485+
dependencies: [
486+
"SKTestSupport",
487+
"SwiftExtensions",
488+
"TSCExtensions",
489+
],
490+
exclude: ["CMakeLists.txt"],
491+
swiftSettings: globalSwiftSettings
492+
),
436493
]
437494

438495
if buildOnlyTests {

Sources/BuildSystemIntegration/BuildSystemManager.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ package import BuildServerProtocol
1515
import Dispatch
1616
import Foundation
1717
package import LanguageServerProtocol
18+
package import LanguageServerProtocolExtensions
1819
import SKLogging
1920
package import SKOptions
20-
package import SKSupport
21+
import SKUtilities
2122
package import SwiftExtensions
2223
package import ToolchainRegistry
24+
import TSCExtensions
2325

2426
package import struct TSCBasic.AbsolutePath
2527
package import struct TSCBasic.RelativePath
@@ -28,11 +30,13 @@ import BuildServerProtocol
2830
import Dispatch
2931
import Foundation
3032
import LanguageServerProtocol
33+
import LanguageServerProtocolExtensions
3134
import SKLogging
3235
import SKOptions
33-
import SKSupport
36+
import SKUtilities
3437
import SwiftExtensions
3538
import ToolchainRegistry
39+
import TSCExtensions
3640

3741
import struct TSCBasic.AbsolutePath
3842
import struct TSCBasic.RelativePath

Sources/BuildSystemIntegration/BuildSystemMessageDependencyTracker.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
#if compiler(>=6)
1414
import BuildServerProtocol
1515
package import LanguageServerProtocol
16+
import LanguageServerProtocolExtensions
1617
import SKLogging
17-
import SKSupport
1818
import SwiftExtensions
1919
#else
2020
import BuildServerProtocol
2121
import LanguageServerProtocol
22+
import LanguageServerProtocolExtensions
2223
import SKLogging
23-
import SKSupport
2424
import SwiftExtensions
2525
#endif
2626

Sources/BuildSystemIntegration/BuiltInBuildSystemAdapter.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
import BuildServerProtocol
1414
import Foundation
1515
import LanguageServerProtocol
16+
import LanguageServerProtocolExtensions
1617
import SKLogging
1718
import SKOptions
18-
import SKSupport
1919
import SwiftExtensions
2020
import ToolchainRegistry
2121

Sources/BuildSystemIntegration/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,15 @@ target_link_libraries(BuildSystemIntegration PUBLIC
2929
LanguageServerProtocolJSONRPC
3030
SKLogging
3131
SKOptions
32-
SKSupport
32+
LanguageServerProtocolExtensions
3333
SourceKitD
3434
SwiftExtensions
3535
ToolchainRegistry
3636
PackageModel
3737
TSCBasic
3838
Build
3939
SourceKitLSPAPI)
40+
41+
target_link_libraries(BuildSystemIntegration PRIVATE
42+
SKUtilities
43+
TSCExtensions)

Sources/BuildSystemIntegration/CompilationDatabase.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414
package import BuildServerProtocol
1515
import Foundation
1616
package import LanguageServerProtocol
17+
import LanguageServerProtocolExtensions
1718
import SKLogging
18-
import SKSupport
1919
import SwiftExtensions
20+
import TSCExtensions
2021

2122
package import struct TSCBasic.AbsolutePath
2223
package import protocol TSCBasic.FileSystem
@@ -26,9 +27,10 @@ package import var TSCBasic.localFileSystem
2627
import BuildServerProtocol
2728
import Foundation
2829
import LanguageServerProtocol
30+
import LanguageServerProtocolExtensions
2931
import SKLogging
30-
import SKSupport
3132
import SwiftExtensions
33+
import TSCExtensions
3234

3335
import struct TSCBasic.AbsolutePath
3436
import protocol TSCBasic.FileSystem

Sources/BuildSystemIntegration/CompilationDatabaseBuildSystem.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@
1414
package import BuildServerProtocol
1515
import Dispatch
1616
package import LanguageServerProtocol
17+
import LanguageServerProtocolExtensions
1718
import SKLogging
1819
package import SKOptions
19-
import SKSupport
2020
import ToolchainRegistry
21+
import TSCExtensions
2122

2223
import struct Foundation.URL
2324
package import struct TSCBasic.AbsolutePath
@@ -28,10 +29,11 @@ package import var TSCBasic.localFileSystem
2829
import BuildServerProtocol
2930
import Dispatch
3031
import LanguageServerProtocol
32+
import LanguageServerProtocolExtensions
3133
import SKLogging
3234
import SKOptions
33-
import SKSupport
3435
import ToolchainRegistry
36+
import TSCExtensions
3537

3638
import struct Foundation.URL
3739
import struct TSCBasic.AbsolutePath

0 commit comments

Comments
 (0)