Skip to content

Commit cfe18f1

Browse files
committed
Split toolchain-related functionality out of SKCore
1 parent 1ef71cf commit cfe18f1

Some content is hidden

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

49 files changed

+104
-32
lines changed

Documentation/Modules.md

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,6 @@ This includes:
6767
- SplitShellCommand.swift
6868
- WorkspaceType.swift
6969

70-
#### ToolchainRegistry
71-
72-
Discovers Swift toolchains on the system.
73-
74-
- Toolchain.swift
75-
- ToolchainRegistry.swift
76-
- XCToolchainPlist.swift
77-
7870
### SKLogging
7971

8072
Types that are API-compatible with OSLog to allow logging to OSLog when building for Darwin platforms and logging to stderr or files on non-Darwin platforms. This should not be dependent on any LSP specific types and be portable to other packages.
@@ -112,3 +104,6 @@ This is the core module that implements the SourceKit-LSP server.
112104

113105
Extensions to the Swift standard library and Foundation. Should not have any other dependencies. Any types in here should theoretically make senses to put in the Swift standard library or Foundation and they shouldn't be specific to SourceKit-LSP
114106

107+
#### ToolchainRegistry
108+
109+
Discovers Swift toolchains on the system.

Package.swift

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ let package = Package(
3030
"SKCore",
3131
"SKSupport",
3232
"SourceKitLSP",
33+
"ToolchainRegistry",
3334
.product(name: "ArgumentParser", package: "swift-argument-parser"),
3435
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
3536
],
@@ -81,6 +82,7 @@ let package = Package(
8182
"SourceKitD",
8283
"SourceKitLSP",
8384
"SwiftExtensions",
85+
"ToolchainRegistry",
8486
.product(name: "ArgumentParser", package: "swift-argument-parser"),
8587
.product(name: "SwiftIDEUtils", package: "swift-syntax"),
8688
.product(name: "SwiftSyntax", package: "swift-syntax"),
@@ -98,6 +100,7 @@ let package = Package(
98100
"SKLogging",
99101
"SKTestSupport",
100102
"SourceKitD",
103+
"ToolchainRegistry",
101104
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
102105
]
103106
),
@@ -111,6 +114,7 @@ let package = Package(
111114
"SKCore",
112115
"SKLogging",
113116
"SourceKitLSP",
117+
"ToolchainRegistry",
114118
],
115119
exclude: ["CMakeLists.txt"]
116120
),
@@ -159,6 +163,7 @@ let package = Package(
159163
"SKCore",
160164
"SKLogging",
161165
"SwiftExtensions",
166+
"ToolchainRegistry",
162167
.product(name: "IndexStoreDB", package: "indexstore-db"),
163168
],
164169
exclude: ["CMakeLists.txt"]
@@ -185,6 +190,7 @@ let package = Package(
185190
"SKSupport",
186191
"SourceKitD",
187192
"SwiftExtensions",
193+
"ToolchainRegistry",
188194
.product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"),
189195
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
190196
],
@@ -196,6 +202,7 @@ let package = Package(
196202
dependencies: [
197203
"SKCore",
198204
"SKTestSupport",
205+
"ToolchainRegistry",
199206
]
200207
),
201208

@@ -252,6 +259,7 @@ let package = Package(
252259
"SKCore",
253260
"SKLogging",
254261
"SwiftExtensions",
262+
"ToolchainRegistry",
255263
.product(name: "SwiftPM-auto", package: "swift-package-manager"),
256264
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
257265
],
@@ -266,6 +274,7 @@ let package = Package(
266274
"SKSwiftPMWorkspace",
267275
"SKTestSupport",
268276
"SourceKitLSP",
277+
"ToolchainRegistry",
269278
.product(name: "SwiftPM-auto", package: "swift-package-manager"),
270279
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
271280
]
@@ -285,6 +294,7 @@ let package = Package(
285294
"SKSupport",
286295
"SourceKitLSP",
287296
"SwiftExtensions",
297+
"ToolchainRegistry",
288298
.product(name: "ISDBTestSupport", package: "indexstore-db"),
289299
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
290300
],
@@ -311,6 +321,7 @@ let package = Package(
311321
"SKCore",
312322
"SKTestSupport",
313323
"SwiftExtensions",
324+
"ToolchainRegistry",
314325
]
315326
),
316327

@@ -329,6 +340,7 @@ let package = Package(
329340
"SKSwiftPMWorkspace",
330341
"SourceKitD",
331342
"SwiftExtensions",
343+
"ToolchainRegistry",
332344
.product(name: "IndexStoreDB", package: "indexstore-db"),
333345
.product(name: "SwiftBasicFormat", package: "swift-syntax"),
334346
.product(name: "Crypto", package: "swift-crypto"),
@@ -356,6 +368,7 @@ let package = Package(
356368
"SKTestSupport",
357369
"SourceKitD",
358370
"SourceKitLSP",
371+
"ToolchainRegistry",
359372
.product(name: "IndexStoreDB", package: "indexstore-db"),
360373
.product(name: "ISDBTestSupport", package: "indexstore-db"),
361374
.product(name: "SwiftParser", package: "swift-syntax"),
@@ -374,6 +387,30 @@ let package = Package(
374387
name: "SwiftExtensions",
375388
exclude: ["CMakeLists.txt"]
376389
),
390+
391+
// MARK: ToolchainRegistry
392+
393+
.target(
394+
name: "ToolchainRegistry",
395+
dependencies: [
396+
"SKLogging",
397+
"SKSupport",
398+
"SwiftExtensions",
399+
.product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"),
400+
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
401+
],
402+
exclude: ["CMakeLists.txt"]
403+
),
404+
405+
.testTarget(
406+
name: "ToolchainRegistryTests",
407+
dependencies: [
408+
"SKTestSupport",
409+
"ToolchainRegistry",
410+
.product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"),
411+
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
412+
]
413+
),
377414
],
378415
swiftLanguageVersions: [.v5, .version("6")]
379416
)

Sources/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ add_subdirectory(SourceKitLSP)
1515
add_subdirectory(SourceKitD)
1616
add_subdirectory(sourcekit-lsp)
1717
add_subdirectory(SwiftExtensions)
18+
add_subdirectory(ToolchainRegistry)

Sources/Diagnose/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ target_link_libraries(Diagnose PUBLIC
3030
SKLogging
3131
SourceKitD
3232
SwiftExtensions
33+
ToolchainRegistry
3334
ArgumentParser
3435
SwiftSyntax::SwiftIDEUtils
3536
SwiftSyntax::SwiftSyntax

Sources/Diagnose/DiagnoseCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import ArgumentParser
1414
import Foundation
15-
import SKCore
15+
import ToolchainRegistry
1616

1717
import struct TSCBasic.AbsolutePath
1818
import class TSCBasic.Process

Sources/Diagnose/IndexCommand.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import SKCore
1818
import SKSupport
1919
import SourceKitLSP
2020
import SwiftExtensions
21+
import ToolchainRegistry
2122

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

Sources/Diagnose/ReduceCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import ArgumentParser
1414
import Foundation
15-
import SKCore
15+
import ToolchainRegistry
1616

1717
import struct TSCBasic.AbsolutePath
1818
import class TSCBasic.Process

Sources/Diagnose/ReduceFrontendCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import ArgumentParser
1414
import Foundation
15-
import SKCore
15+
import ToolchainRegistry
1616

1717
import struct TSCBasic.AbsolutePath
1818
import class TSCBasic.Process

Sources/Diagnose/ReproducerBundle.swift

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

1313
import Foundation
14-
import SKCore
14+
import ToolchainRegistry
1515

1616
/// Create a folder that contains all files that should be necessary to reproduce a sourcekitd crash.
1717
/// - Parameters:

Sources/Diagnose/RunSourcekitdRequestCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212

1313
import ArgumentParser
1414
import Foundation
15-
import SKCore
1615
import SKSupport
1716
import SourceKitD
17+
import ToolchainRegistry
1818

1919
import struct TSCBasic.AbsolutePath
2020

Sources/Diagnose/Toolchain+SwiftFrontend.swift

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

1313
import Foundation
14-
import SKCore
14+
import ToolchainRegistry
1515

1616
extension Toolchain {
1717
/// The path to `swift-frontend` in the toolchain, found relative to `swift`.

Sources/InProcessClient/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ target_link_libraries(InProcessClient PUBLIC
1010
SKCore
1111
SKLogging
1212
SourceKitLSP
13+
ToolchainRegistry
1314
)

Sources/InProcessClient/InProcessSourceKitLSPClient.swift

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

1819
/// Launches a `SourceKitLSPServer` in-process and allows sending messages to it.
1920
public final class InProcessSourceKitLSPClient: Sendable {

Sources/SKCore/BuildServerBuildSystem.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import LanguageServerProtocolJSONRPC
1616
import SKLogging
1717
import SKSupport
1818
import SwiftExtensions
19+
import ToolchainRegistry
1920

2021
import struct TSCBasic.AbsolutePath
2122
import protocol TSCBasic.FileSystem
@@ -281,7 +282,7 @@ extension BuildServerBuildSystem: BuildSystem {
281282
return nil
282283
}
283284

284-
package func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? {
285+
package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? {
285286
return nil
286287
}
287288

Sources/SKCore/BuildSystem.swift

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

1718
import struct TSCBasic.AbsolutePath
1819

Sources/SKCore/BuildSystemManager.swift

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

1920
import struct TSCBasic.AbsolutePath
2021

Sources/SKCore/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ add_library(SKCore STATIC
1414
PathPrefixMapping.swift
1515
SourceKitLSPOptions.swift
1616
SplitShellCommand.swift
17-
Toolchain.swift
18-
ToolchainRegistry.swift
19-
WorkspaceType.swift
20-
XCToolchainPlist.swift)
17+
WorkspaceType.swift)
2118
set_target_properties(SKCore PROPERTIES
2219
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY})
2320
target_link_libraries(SKCore PUBLIC
@@ -28,5 +25,6 @@ target_link_libraries(SKCore PUBLIC
2825
SKSupport
2926
SourceKitD
3027
SwiftExtensions
28+
ToolchainRegistry
3129
PackageModel
3230
TSCBasic)

Sources/SKCore/CompilationDatabaseBuildSystem.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Dispatch
1515
import LanguageServerProtocol
1616
import SKLogging
1717
import SKSupport
18+
import ToolchainRegistry
1819

1920
import struct Foundation.URL
2021
import struct TSCBasic.AbsolutePath
@@ -119,7 +120,7 @@ extension CompilationDatabaseBuildSystem: BuildSystem {
119120
return nil
120121
}
121122

122-
package func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? {
123+
package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? {
123124
return nil
124125
}
125126

Sources/SKSwiftPMWorkspace/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ target_link_libraries(SKSwiftPMWorkspace PRIVATE
99
SKCore
1010
SKLogging
1111
SwiftExtensions
12+
ToolchainRegistry
1213
TSCBasic)
1314
target_link_libraries(SKSwiftPMWorkspace PUBLIC
1415
Build

Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import SKSupport
2525
import SourceControl
2626
import SourceKitLSPAPI
2727
import SwiftExtensions
28+
import ToolchainRegistry
2829
import Workspace
2930

3031
import struct Basics.AbsolutePath
@@ -36,6 +37,7 @@ import protocol TSCBasic.FileSystem
3637
import class TSCBasic.Process
3738
import var TSCBasic.localFileSystem
3839
import func TSCBasic.resolveSymlinks
40+
import class ToolchainRegistry.Toolchain
3941

4042
typealias AbsolutePath = Basics.AbsolutePath
4143

@@ -61,7 +63,7 @@ package typealias BuildServerTarget = BuildServerProtocol.BuildTarget
6163
///
6264
/// Needed to work around a compiler crash that prevents us from accessing `toolchainRegistry.preferredToolchain` in
6365
/// `SwiftPMWorkspace.init`.
64-
private func preferredToolchain(_ toolchainRegistry: ToolchainRegistry) async -> SKCore.Toolchain? {
66+
private func preferredToolchain(_ toolchainRegistry: ToolchainRegistry) async -> Toolchain? {
6567
return await toolchainRegistry.preferredToolchain(containing: [
6668
\.clang, \.clangd, \.sourcekitd, \.swift, \.swiftc,
6769
])
@@ -142,7 +144,7 @@ package actor SwiftPMBuildSystem {
142144
package let toolsBuildParameters: BuildParameters
143145
package let destinationBuildParameters: BuildParameters
144146
private let fileSystem: FileSystem
145-
private let toolchain: SKCore.Toolchain
147+
private let toolchain: Toolchain
146148

147149
private var fileToTargets: [DocumentURI: [SwiftBuildTarget]] = [:]
148150
private var sourceDirToTargets: [DocumentURI: [SwiftBuildTarget]] = [:]
@@ -528,7 +530,7 @@ extension SwiftPMBuildSystem: SKCore.BuildSystem {
528530
return nil
529531
}
530532

531-
package func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? {
533+
package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? {
532534
return toolchain
533535
}
534536

Sources/SKTestSupport/IndexedSingleSwiftFileTestProject.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import LanguageServerProtocol
1515
@_spi(Testing) import SKCore
1616
import SourceKitLSP
1717
import TSCBasic
18+
import ToolchainRegistry
1819

1920
package struct IndexedSingleSwiftFileTestProject {
2021
enum Error: Swift.Error {

Sources/SKTestSupport/SkipUnless.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import RegexBuilder
1717
import SKLogging
1818
import SKTestSupport
1919
import SourceKitLSP
20+
import ToolchainRegistry
2021
import XCTest
2122

2223
import enum PackageLoading.Platform

Sources/SKTestSupport/SwiftPMTestProject.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import LanguageServerProtocol
1515
@_spi(Testing) import SKCore
1616
import SourceKitLSP
1717
import TSCBasic
18+
import ToolchainRegistry
1819

1920
private struct SwiftSyntaxCShimsModulemapNotFoundError: Error {}
2021

Sources/SKTestSupport/TestSourceKitLSPClient.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import SKTestSupport
2020
import SourceKitLSP
2121
import SwiftExtensions
2222
import SwiftSyntax
23+
import ToolchainRegistry
2324
import XCTest
2425

2526
extension SourceKitLSPOptions {

0 commit comments

Comments
 (0)