diff --git a/Documentation/Modules.md b/Documentation/Modules.md index 29a73c24..b8381122 100644 --- a/Documentation/Modules.md +++ b/Documentation/Modules.md @@ -67,14 +67,6 @@ This includes: - SplitShellCommand.swift - WorkspaceType.swift -#### ToolchainRegistry - -Discovers Swift toolchains on the system. - -- Toolchain.swift -- ToolchainRegistry.swift -- XCToolchainPlist.swift - ### SKLogging 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. 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 +#### ToolchainRegistry + +Discovers Swift toolchains on the system. diff --git a/Package.swift b/Package.swift index 33acc713..707576c5 100644 --- a/Package.swift +++ b/Package.swift @@ -30,6 +30,7 @@ let package = Package( "SKCore", "SKSupport", "SourceKitLSP", + "ToolchainRegistry", .product(name: "ArgumentParser", package: "swift-argument-parser"), .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), ], @@ -81,6 +82,7 @@ let package = Package( "SourceKitD", "SourceKitLSP", "SwiftExtensions", + "ToolchainRegistry", .product(name: "ArgumentParser", package: "swift-argument-parser"), .product(name: "SwiftIDEUtils", package: "swift-syntax"), .product(name: "SwiftSyntax", package: "swift-syntax"), @@ -98,6 +100,7 @@ let package = Package( "SKLogging", "SKTestSupport", "SourceKitD", + "ToolchainRegistry", .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), ] ), @@ -111,6 +114,7 @@ let package = Package( "SKCore", "SKLogging", "SourceKitLSP", + "ToolchainRegistry", ], exclude: ["CMakeLists.txt"] ), @@ -159,6 +163,7 @@ let package = Package( "SKCore", "SKLogging", "SwiftExtensions", + "ToolchainRegistry", .product(name: "IndexStoreDB", package: "indexstore-db"), ], exclude: ["CMakeLists.txt"] @@ -185,6 +190,7 @@ let package = Package( "SKSupport", "SourceKitD", "SwiftExtensions", + "ToolchainRegistry", .product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"), .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), ], @@ -196,6 +202,7 @@ let package = Package( dependencies: [ "SKCore", "SKTestSupport", + "ToolchainRegistry", ] ), @@ -252,6 +259,7 @@ let package = Package( "SKCore", "SKLogging", "SwiftExtensions", + "ToolchainRegistry", .product(name: "SwiftPM-auto", package: "swift-package-manager"), .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), ], @@ -266,6 +274,7 @@ let package = Package( "SKSwiftPMWorkspace", "SKTestSupport", "SourceKitLSP", + "ToolchainRegistry", .product(name: "SwiftPM-auto", package: "swift-package-manager"), .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), ] @@ -285,6 +294,7 @@ let package = Package( "SKSupport", "SourceKitLSP", "SwiftExtensions", + "ToolchainRegistry", .product(name: "ISDBTestSupport", package: "indexstore-db"), .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), ], @@ -311,6 +321,7 @@ let package = Package( "SKCore", "SKTestSupport", "SwiftExtensions", + "ToolchainRegistry", ] ), @@ -329,6 +340,7 @@ let package = Package( "SKSwiftPMWorkspace", "SourceKitD", "SwiftExtensions", + "ToolchainRegistry", .product(name: "IndexStoreDB", package: "indexstore-db"), .product(name: "SwiftBasicFormat", package: "swift-syntax"), .product(name: "Crypto", package: "swift-crypto"), @@ -356,6 +368,7 @@ let package = Package( "SKTestSupport", "SourceKitD", "SourceKitLSP", + "ToolchainRegistry", .product(name: "IndexStoreDB", package: "indexstore-db"), .product(name: "ISDBTestSupport", package: "indexstore-db"), .product(name: "SwiftParser", package: "swift-syntax"), @@ -374,6 +387,30 @@ let package = Package( name: "SwiftExtensions", exclude: ["CMakeLists.txt"] ), + + // MARK: ToolchainRegistry + + .target( + name: "ToolchainRegistry", + dependencies: [ + "SKLogging", + "SKSupport", + "SwiftExtensions", + .product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"), + .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), + ], + exclude: ["CMakeLists.txt"] + ), + + .testTarget( + name: "ToolchainRegistryTests", + dependencies: [ + "SKTestSupport", + "ToolchainRegistry", + .product(name: "SwiftPMDataModel-auto", package: "swift-package-manager"), + .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), + ] + ), ], swiftLanguageVersions: [.v5, .version("6")] ) diff --git a/Sources/CMakeLists.txt b/Sources/CMakeLists.txt index 282f31f8..ee614491 100644 --- a/Sources/CMakeLists.txt +++ b/Sources/CMakeLists.txt @@ -15,3 +15,4 @@ add_subdirectory(SourceKitLSP) add_subdirectory(SourceKitD) add_subdirectory(sourcekit-lsp) add_subdirectory(SwiftExtensions) +add_subdirectory(ToolchainRegistry) diff --git a/Sources/Diagnose/CMakeLists.txt b/Sources/Diagnose/CMakeLists.txt index 559b32e2..afdf3365 100644 --- a/Sources/Diagnose/CMakeLists.txt +++ b/Sources/Diagnose/CMakeLists.txt @@ -30,6 +30,7 @@ target_link_libraries(Diagnose PUBLIC SKLogging SourceKitD SwiftExtensions + ToolchainRegistry ArgumentParser SwiftSyntax::SwiftIDEUtils SwiftSyntax::SwiftSyntax diff --git a/Sources/Diagnose/DiagnoseCommand.swift b/Sources/Diagnose/DiagnoseCommand.swift index 44979b13..10f2fa4b 100644 --- a/Sources/Diagnose/DiagnoseCommand.swift +++ b/Sources/Diagnose/DiagnoseCommand.swift @@ -12,7 +12,7 @@ import ArgumentParser import Foundation -import SKCore +import ToolchainRegistry import struct TSCBasic.AbsolutePath import class TSCBasic.Process diff --git a/Sources/Diagnose/IndexCommand.swift b/Sources/Diagnose/IndexCommand.swift index 94a36173..9b8cc6ed 100644 --- a/Sources/Diagnose/IndexCommand.swift +++ b/Sources/Diagnose/IndexCommand.swift @@ -18,6 +18,7 @@ import SKCore import SKSupport import SourceKitLSP import SwiftExtensions +import ToolchainRegistry import struct TSCBasic.AbsolutePath import class TSCBasic.Process diff --git a/Sources/Diagnose/ReduceCommand.swift b/Sources/Diagnose/ReduceCommand.swift index 548cf1ad..fa6ac24c 100644 --- a/Sources/Diagnose/ReduceCommand.swift +++ b/Sources/Diagnose/ReduceCommand.swift @@ -12,7 +12,7 @@ import ArgumentParser import Foundation -import SKCore +import ToolchainRegistry import struct TSCBasic.AbsolutePath import class TSCBasic.Process diff --git a/Sources/Diagnose/ReduceFrontendCommand.swift b/Sources/Diagnose/ReduceFrontendCommand.swift index 970d19bd..b9803c52 100644 --- a/Sources/Diagnose/ReduceFrontendCommand.swift +++ b/Sources/Diagnose/ReduceFrontendCommand.swift @@ -12,7 +12,7 @@ import ArgumentParser import Foundation -import SKCore +import ToolchainRegistry import struct TSCBasic.AbsolutePath import class TSCBasic.Process diff --git a/Sources/Diagnose/ReproducerBundle.swift b/Sources/Diagnose/ReproducerBundle.swift index c62873d8..7a0181b0 100644 --- a/Sources/Diagnose/ReproducerBundle.swift +++ b/Sources/Diagnose/ReproducerBundle.swift @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// import Foundation -import SKCore +import ToolchainRegistry /// Create a folder that contains all files that should be necessary to reproduce a sourcekitd crash. /// - Parameters: diff --git a/Sources/Diagnose/RunSourcekitdRequestCommand.swift b/Sources/Diagnose/RunSourcekitdRequestCommand.swift index 9167c7c1..2a742f50 100644 --- a/Sources/Diagnose/RunSourcekitdRequestCommand.swift +++ b/Sources/Diagnose/RunSourcekitdRequestCommand.swift @@ -12,9 +12,9 @@ import ArgumentParser import Foundation -import SKCore import SKSupport import SourceKitD +import ToolchainRegistry import struct TSCBasic.AbsolutePath diff --git a/Sources/Diagnose/Toolchain+SwiftFrontend.swift b/Sources/Diagnose/Toolchain+SwiftFrontend.swift index 92aa20bb..4b84bf69 100644 --- a/Sources/Diagnose/Toolchain+SwiftFrontend.swift +++ b/Sources/Diagnose/Toolchain+SwiftFrontend.swift @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// import Foundation -import SKCore +import ToolchainRegistry extension Toolchain { /// The path to `swift-frontend` in the toolchain, found relative to `swift`. diff --git a/Sources/InProcessClient/CMakeLists.txt b/Sources/InProcessClient/CMakeLists.txt index 9d7a09d3..440528b1 100644 --- a/Sources/InProcessClient/CMakeLists.txt +++ b/Sources/InProcessClient/CMakeLists.txt @@ -10,4 +10,5 @@ target_link_libraries(InProcessClient PUBLIC SKCore SKLogging SourceKitLSP + ToolchainRegistry ) diff --git a/Sources/InProcessClient/InProcessSourceKitLSPClient.swift b/Sources/InProcessClient/InProcessSourceKitLSPClient.swift index 9f23052c..693e5da6 100644 --- a/Sources/InProcessClient/InProcessSourceKitLSPClient.swift +++ b/Sources/InProcessClient/InProcessSourceKitLSPClient.swift @@ -14,6 +14,7 @@ import LanguageServerProtocol import SKCore import SKSupport import SourceKitLSP +import ToolchainRegistry /// Launches a `SourceKitLSPServer` in-process and allows sending messages to it. public final class InProcessSourceKitLSPClient: Sendable { diff --git a/Sources/SKCore/BuildServerBuildSystem.swift b/Sources/SKCore/BuildServerBuildSystem.swift index 94a65c9c..e7770846 100644 --- a/Sources/SKCore/BuildServerBuildSystem.swift +++ b/Sources/SKCore/BuildServerBuildSystem.swift @@ -16,6 +16,7 @@ import LanguageServerProtocolJSONRPC import SKLogging import SKSupport import SwiftExtensions +import ToolchainRegistry import struct TSCBasic.AbsolutePath import protocol TSCBasic.FileSystem @@ -281,7 +282,7 @@ extension BuildServerBuildSystem: BuildSystem { return nil } - package func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? { + package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? { return nil } diff --git a/Sources/SKCore/BuildSystem.swift b/Sources/SKCore/BuildSystem.swift index 50e176cf..8b9e14c2 100644 --- a/Sources/SKCore/BuildSystem.swift +++ b/Sources/SKCore/BuildSystem.swift @@ -13,6 +13,7 @@ import BuildServerProtocol import LanguageServerProtocol import SKLogging +import ToolchainRegistry import struct TSCBasic.AbsolutePath diff --git a/Sources/SKCore/BuildSystemManager.swift b/Sources/SKCore/BuildSystemManager.swift index 1e1c9ab7..9c18105c 100644 --- a/Sources/SKCore/BuildSystemManager.swift +++ b/Sources/SKCore/BuildSystemManager.swift @@ -15,6 +15,7 @@ import Dispatch import LanguageServerProtocol import SKLogging import SwiftExtensions +import ToolchainRegistry import struct TSCBasic.AbsolutePath diff --git a/Sources/SKCore/CMakeLists.txt b/Sources/SKCore/CMakeLists.txt index 6d392e62..cfe63504 100644 --- a/Sources/SKCore/CMakeLists.txt +++ b/Sources/SKCore/CMakeLists.txt @@ -14,10 +14,7 @@ add_library(SKCore STATIC PathPrefixMapping.swift SourceKitLSPOptions.swift SplitShellCommand.swift - Toolchain.swift - ToolchainRegistry.swift - WorkspaceType.swift - XCToolchainPlist.swift) + WorkspaceType.swift) set_target_properties(SKCore PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) target_link_libraries(SKCore PUBLIC @@ -28,5 +25,6 @@ target_link_libraries(SKCore PUBLIC SKSupport SourceKitD SwiftExtensions + ToolchainRegistry PackageModel TSCBasic) diff --git a/Sources/SKCore/CompilationDatabaseBuildSystem.swift b/Sources/SKCore/CompilationDatabaseBuildSystem.swift index 44ca9304..7ce3239e 100644 --- a/Sources/SKCore/CompilationDatabaseBuildSystem.swift +++ b/Sources/SKCore/CompilationDatabaseBuildSystem.swift @@ -15,6 +15,7 @@ import Dispatch import LanguageServerProtocol import SKLogging import SKSupport +import ToolchainRegistry import struct Foundation.URL import struct TSCBasic.AbsolutePath @@ -119,7 +120,7 @@ extension CompilationDatabaseBuildSystem: BuildSystem { return nil } - package func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? { + package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? { return nil } diff --git a/Sources/SKSwiftPMWorkspace/CMakeLists.txt b/Sources/SKSwiftPMWorkspace/CMakeLists.txt index 306d9701..1af6cec9 100644 --- a/Sources/SKSwiftPMWorkspace/CMakeLists.txt +++ b/Sources/SKSwiftPMWorkspace/CMakeLists.txt @@ -9,6 +9,7 @@ target_link_libraries(SKSwiftPMWorkspace PRIVATE SKCore SKLogging SwiftExtensions + ToolchainRegistry TSCBasic) target_link_libraries(SKSwiftPMWorkspace PUBLIC Build diff --git a/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift b/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift index 9b2c066f..62f72018 100644 --- a/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift +++ b/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift @@ -25,6 +25,7 @@ import SKSupport import SourceControl import SourceKitLSPAPI import SwiftExtensions +import ToolchainRegistry import Workspace import struct Basics.AbsolutePath @@ -36,6 +37,7 @@ import protocol TSCBasic.FileSystem import class TSCBasic.Process import var TSCBasic.localFileSystem import func TSCBasic.resolveSymlinks +import class ToolchainRegistry.Toolchain typealias AbsolutePath = Basics.AbsolutePath @@ -61,7 +63,7 @@ package typealias BuildServerTarget = BuildServerProtocol.BuildTarget /// /// Needed to work around a compiler crash that prevents us from accessing `toolchainRegistry.preferredToolchain` in /// `SwiftPMWorkspace.init`. -private func preferredToolchain(_ toolchainRegistry: ToolchainRegistry) async -> SKCore.Toolchain? { +private func preferredToolchain(_ toolchainRegistry: ToolchainRegistry) async -> Toolchain? { return await toolchainRegistry.preferredToolchain(containing: [ \.clang, \.clangd, \.sourcekitd, \.swift, \.swiftc, ]) @@ -142,7 +144,7 @@ package actor SwiftPMBuildSystem { package let toolsBuildParameters: BuildParameters package let destinationBuildParameters: BuildParameters private let fileSystem: FileSystem - private let toolchain: SKCore.Toolchain + private let toolchain: Toolchain private var fileToTargets: [DocumentURI: [SwiftBuildTarget]] = [:] private var sourceDirToTargets: [DocumentURI: [SwiftBuildTarget]] = [:] @@ -528,7 +530,7 @@ extension SwiftPMBuildSystem: SKCore.BuildSystem { return nil } - package func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? { + package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? { return toolchain } diff --git a/Sources/SKTestSupport/IndexedSingleSwiftFileTestProject.swift b/Sources/SKTestSupport/IndexedSingleSwiftFileTestProject.swift index 9799fb7e..f06ff95a 100644 --- a/Sources/SKTestSupport/IndexedSingleSwiftFileTestProject.swift +++ b/Sources/SKTestSupport/IndexedSingleSwiftFileTestProject.swift @@ -15,6 +15,7 @@ import LanguageServerProtocol @_spi(Testing) import SKCore import SourceKitLSP import TSCBasic +import ToolchainRegistry package struct IndexedSingleSwiftFileTestProject { enum Error: Swift.Error { diff --git a/Sources/SKTestSupport/SkipUnless.swift b/Sources/SKTestSupport/SkipUnless.swift index b1411c13..9a7a570e 100644 --- a/Sources/SKTestSupport/SkipUnless.swift +++ b/Sources/SKTestSupport/SkipUnless.swift @@ -17,6 +17,7 @@ import RegexBuilder import SKLogging import SKTestSupport import SourceKitLSP +import ToolchainRegistry import XCTest import enum PackageLoading.Platform diff --git a/Sources/SKTestSupport/SwiftPMTestProject.swift b/Sources/SKTestSupport/SwiftPMTestProject.swift index edf02699..22ffb809 100644 --- a/Sources/SKTestSupport/SwiftPMTestProject.swift +++ b/Sources/SKTestSupport/SwiftPMTestProject.swift @@ -15,6 +15,7 @@ import LanguageServerProtocol @_spi(Testing) import SKCore import SourceKitLSP import TSCBasic +import ToolchainRegistry private struct SwiftSyntaxCShimsModulemapNotFoundError: Error {} diff --git a/Sources/SKTestSupport/TestSourceKitLSPClient.swift b/Sources/SKTestSupport/TestSourceKitLSPClient.swift index cd93b5ce..9477d38b 100644 --- a/Sources/SKTestSupport/TestSourceKitLSPClient.swift +++ b/Sources/SKTestSupport/TestSourceKitLSPClient.swift @@ -20,6 +20,7 @@ import SKTestSupport import SourceKitLSP import SwiftExtensions import SwiftSyntax +import ToolchainRegistry import XCTest extension SourceKitLSPOptions { diff --git a/Sources/SemanticIndex/CMakeLists.txt b/Sources/SemanticIndex/CMakeLists.txt index 99b9fd52..b09c1ca8 100644 --- a/Sources/SemanticIndex/CMakeLists.txt +++ b/Sources/SemanticIndex/CMakeLists.txt @@ -17,5 +17,6 @@ target_link_libraries(SemanticIndex PRIVATE SKCore SKLogging SwiftExtensions + ToolchainRegistry IndexStoreDB $<$>:Foundation>) diff --git a/Sources/SemanticIndex/UpToDateTracker.swift b/Sources/SemanticIndex/UpToDateTracker.swift index a6490ec7..86adbe6e 100644 --- a/Sources/SemanticIndex/UpToDateTracker.swift +++ b/Sources/SemanticIndex/UpToDateTracker.swift @@ -11,7 +11,6 @@ //===----------------------------------------------------------------------===// import Foundation -import SKCore /// Keeps track of whether an item (a target or file to index) is up-to-date. actor UpToDateTracker { diff --git a/Sources/SemanticIndex/UpdateIndexStoreTaskDescription.swift b/Sources/SemanticIndex/UpdateIndexStoreTaskDescription.swift index 8acff30b..e5fba2f5 100644 --- a/Sources/SemanticIndex/UpdateIndexStoreTaskDescription.swift +++ b/Sources/SemanticIndex/UpdateIndexStoreTaskDescription.swift @@ -16,6 +16,7 @@ import SKCore import SKLogging import SKSupport import SwiftExtensions +import ToolchainRegistry import struct TSCBasic.AbsolutePath import class TSCBasic.Process diff --git a/Sources/SourceKitLSP/CMakeLists.txt b/Sources/SourceKitLSP/CMakeLists.txt index e35a9913..ed060e43 100644 --- a/Sources/SourceKitLSP/CMakeLists.txt +++ b/Sources/SourceKitLSP/CMakeLists.txt @@ -84,6 +84,7 @@ target_link_libraries(SourceKitLSP PUBLIC SKSwiftPMWorkspace SourceKitD SwiftExtensions + ToolchainRegistry IndexStoreDB SwiftSyntax::SwiftBasicFormat SwiftSyntax::SwiftDiagnostics diff --git a/Sources/SourceKitLSP/Clang/ClangLanguageService.swift b/Sources/SourceKitLSP/Clang/ClangLanguageService.swift index edc7e1fe..f37cb9c0 100644 --- a/Sources/SourceKitLSP/Clang/ClangLanguageService.swift +++ b/Sources/SourceKitLSP/Clang/ClangLanguageService.swift @@ -17,6 +17,7 @@ import SKLogging import SKSupport import SwiftExtensions import SwiftSyntax +import ToolchainRegistry import struct TSCBasic.AbsolutePath diff --git a/Sources/SourceKitLSP/CreateBuildSystem.swift b/Sources/SourceKitLSP/CreateBuildSystem.swift index 768ed764..5cac38cc 100644 --- a/Sources/SourceKitLSP/CreateBuildSystem.swift +++ b/Sources/SourceKitLSP/CreateBuildSystem.swift @@ -14,6 +14,7 @@ import LanguageServerProtocol import SKCore import SKLogging import SKSwiftPMWorkspace +import ToolchainRegistry import struct TSCBasic.AbsolutePath import struct TSCBasic.RelativePath diff --git a/Sources/SourceKitLSP/LanguageService.swift b/Sources/SourceKitLSP/LanguageService.swift index feaefa52..9ac7cce2 100644 --- a/Sources/SourceKitLSP/LanguageService.swift +++ b/Sources/SourceKitLSP/LanguageService.swift @@ -14,6 +14,7 @@ import Foundation import LanguageServerProtocol import SKCore import SwiftSyntax +import ToolchainRegistry /// The state of a `ToolchainLanguageServer` package enum LanguageServerState { diff --git a/Sources/SourceKitLSP/SourceKitLSPServer.swift b/Sources/SourceKitLSP/SourceKitLSPServer.swift index e8af5bab..a4128161 100644 --- a/Sources/SourceKitLSP/SourceKitLSPServer.swift +++ b/Sources/SourceKitLSP/SourceKitLSPServer.swift @@ -23,6 +23,7 @@ import SKSwiftPMWorkspace import SemanticIndex import SourceKitD import SwiftExtensions +import ToolchainRegistry import struct PackageModel.BuildFlags import struct TSCBasic.AbsolutePath diff --git a/Sources/SourceKitLSP/Swift/SwiftLanguageService.swift b/Sources/SourceKitLSP/Swift/SwiftLanguageService.swift index 1f222197..7a5517c3 100644 --- a/Sources/SourceKitLSP/Swift/SwiftLanguageService.swift +++ b/Sources/SourceKitLSP/Swift/SwiftLanguageService.swift @@ -23,6 +23,7 @@ import SwiftExtensions import SwiftParser import SwiftParserDiagnostics import SwiftSyntax +import ToolchainRegistry import struct TSCBasic.AbsolutePath diff --git a/Sources/SourceKitLSP/Workspace.swift b/Sources/SourceKitLSP/Workspace.swift index 46ca6816..11eb25f4 100644 --- a/Sources/SourceKitLSP/Workspace.swift +++ b/Sources/SourceKitLSP/Workspace.swift @@ -17,6 +17,7 @@ import SKLogging import SKSupport import SemanticIndex import SwiftExtensions +import ToolchainRegistry import struct TSCBasic.AbsolutePath import struct TSCBasic.RelativePath diff --git a/Sources/ToolchainRegistry/CMakeLists.txt b/Sources/ToolchainRegistry/CMakeLists.txt new file mode 100644 index 00000000..6c71b9e0 --- /dev/null +++ b/Sources/ToolchainRegistry/CMakeLists.txt @@ -0,0 +1,13 @@ + +add_library(ToolchainRegistry STATIC + Toolchain.swift + ToolchainRegistry.swift + XCToolchainPlist.swift) +set_target_properties(ToolchainRegistry PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) +target_link_libraries(ToolchainRegistry PUBLIC + SKLogging + SKSupport + SwiftExtensions + PackageModel + TSCBasic) diff --git a/Sources/SKCore/Toolchain.swift b/Sources/ToolchainRegistry/Toolchain.swift similarity index 99% rename from Sources/SKCore/Toolchain.swift rename to Sources/ToolchainRegistry/Toolchain.swift index 55db84e5..0e754efa 100644 --- a/Sources/SKCore/Toolchain.swift +++ b/Sources/ToolchainRegistry/Toolchain.swift @@ -10,10 +10,8 @@ // //===----------------------------------------------------------------------===// -import LanguageServerProtocol import RegexBuilder import SKLogging -import SKSupport import SwiftExtensions import enum PackageLoading.Platform diff --git a/Sources/SKCore/ToolchainRegistry.swift b/Sources/ToolchainRegistry/ToolchainRegistry.swift similarity index 99% rename from Sources/SKCore/ToolchainRegistry.swift rename to Sources/ToolchainRegistry/ToolchainRegistry.swift index 81ba690b..9feb7b22 100644 --- a/Sources/SKCore/ToolchainRegistry.swift +++ b/Sources/ToolchainRegistry/ToolchainRegistry.swift @@ -11,8 +11,6 @@ //===----------------------------------------------------------------------===// import Dispatch -import Foundation -import LanguageServerProtocol import SKSupport import struct TSCBasic.AbsolutePath diff --git a/Sources/SKCore/XCToolchainPlist.swift b/Sources/ToolchainRegistry/XCToolchainPlist.swift similarity index 100% rename from Sources/SKCore/XCToolchainPlist.swift rename to Sources/ToolchainRegistry/XCToolchainPlist.swift diff --git a/Sources/sourcekit-lsp/CMakeLists.txt b/Sources/sourcekit-lsp/CMakeLists.txt index fbbc62c1..bcbf598e 100644 --- a/Sources/sourcekit-lsp/CMakeLists.txt +++ b/Sources/sourcekit-lsp/CMakeLists.txt @@ -9,6 +9,7 @@ target_link_libraries(sourcekit-lsp PRIVATE SKCore SKSupport SourceKitLSP + ToolchainRegistry ArgumentParser TSCBasic) target_compile_options(sourcekit-lsp PRIVATE diff --git a/Sources/sourcekit-lsp/SourceKitLSP.swift b/Sources/sourcekit-lsp/SourceKitLSP.swift index 8a0d2598..b7d9cd5d 100644 --- a/Sources/sourcekit-lsp/SourceKitLSP.swift +++ b/Sources/sourcekit-lsp/SourceKitLSP.swift @@ -20,6 +20,7 @@ import SKCore import SKLogging import SKSupport import SourceKitLSP +import ToolchainRegistry import struct TSCBasic.AbsolutePath import struct TSCBasic.RelativePath diff --git a/Tests/DiagnoseTests/DiagnoseTests.swift b/Tests/DiagnoseTests/DiagnoseTests.swift index 2708e400..5c07d39b 100644 --- a/Tests/DiagnoseTests/DiagnoseTests.swift +++ b/Tests/DiagnoseTests/DiagnoseTests.swift @@ -16,6 +16,7 @@ import Foundation import SKLogging import SKTestSupport import SourceKitD +import ToolchainRegistry import XCTest import struct TSCBasic.AbsolutePath diff --git a/Tests/SKCoreTests/BuildSystemManagerTests.swift b/Tests/SKCoreTests/BuildSystemManagerTests.swift index e71dc368..7fa2e796 100644 --- a/Tests/SKCoreTests/BuildSystemManagerTests.swift +++ b/Tests/SKCoreTests/BuildSystemManagerTests.swift @@ -15,6 +15,7 @@ import LanguageServerProtocol @_spi(Testing) import SKCore import SKTestSupport import TSCBasic +import ToolchainRegistry import XCTest final class BuildSystemManagerTests: XCTestCase { @@ -465,7 +466,7 @@ class ManualBuildSystem: BuildSystem { return nil } - package func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? { + package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? { return nil } diff --git a/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift b/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift index ba50e94c..15b49eea 100644 --- a/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift +++ b/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift @@ -18,6 +18,7 @@ import PackageModel import SKTestSupport import SourceKitLSP import TSCBasic +import ToolchainRegistry import XCTest import struct PackageModel.BuildFlags diff --git a/Tests/SourceKitDTests/SourceKitDTests.swift b/Tests/SourceKitDTests/SourceKitDTests.swift index 8adbb6f3..3186494e 100644 --- a/Tests/SourceKitDTests/SourceKitDTests.swift +++ b/Tests/SourceKitDTests/SourceKitDTests.swift @@ -18,6 +18,7 @@ import SKSupport import SKTestSupport import SourceKitD import TSCBasic +import ToolchainRegistry import XCTest import enum PackageLoading.Platform diff --git a/Tests/SourceKitLSPTests/BackgroundIndexingTests.swift b/Tests/SourceKitLSPTests/BackgroundIndexingTests.swift index aeffe6c3..68f5fdd3 100644 --- a/Tests/SourceKitLSPTests/BackgroundIndexingTests.swift +++ b/Tests/SourceKitLSPTests/BackgroundIndexingTests.swift @@ -16,6 +16,7 @@ import SKSupport import SKTestSupport import SemanticIndex import SourceKitLSP +import ToolchainRegistry import XCTest import class TSCBasic.Process diff --git a/Tests/SourceKitLSPTests/BuildSystemTests.swift b/Tests/SourceKitLSPTests/BuildSystemTests.swift index 5e10c64a..dde7fb82 100644 --- a/Tests/SourceKitLSPTests/BuildSystemTests.swift +++ b/Tests/SourceKitLSPTests/BuildSystemTests.swift @@ -17,6 +17,7 @@ import SKTestSupport @_spi(Testing) import SemanticIndex @_spi(Testing) import SourceKitLSP import TSCBasic +import ToolchainRegistry import XCTest /// Build system to be used for testing BuildSystem and BuildSystemDelegate functionality with SourceKitLSPServer @@ -57,7 +58,7 @@ actor TestBuildSystem: BuildSystem { return nil } - func toolchain(for uri: DocumentURI, _ language: Language) async -> SKCore.Toolchain? { + func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? { return nil } diff --git a/Tests/SourceKitLSPTests/WorkspaceTestDiscoveryTests.swift b/Tests/SourceKitLSPTests/WorkspaceTestDiscoveryTests.swift index c3b8dad5..28f6099f 100644 --- a/Tests/SourceKitLSPTests/WorkspaceTestDiscoveryTests.swift +++ b/Tests/SourceKitLSPTests/WorkspaceTestDiscoveryTests.swift @@ -15,6 +15,7 @@ import LanguageServerProtocol @_spi(Testing) import SKCore import SKTestSupport @_spi(Testing) import SourceKitLSP +import ToolchainRegistry import XCTest private let packageManifestWithTestTarget = """ diff --git a/Tests/SourceKitLSPTests/WorkspaceTests.swift b/Tests/SourceKitLSPTests/WorkspaceTests.swift index 27fa666a..eb5dd33c 100644 --- a/Tests/SourceKitLSPTests/WorkspaceTests.swift +++ b/Tests/SourceKitLSPTests/WorkspaceTests.swift @@ -17,6 +17,7 @@ import SKLogging import SKTestSupport import SourceKitLSP import TSCBasic +import ToolchainRegistry import XCTest final class WorkspaceTests: XCTestCase { diff --git a/Tests/SKCoreTests/ToolchainRegistryTests.swift b/Tests/ToolchainRegistryTests/ToolchainRegistryTests.swift similarity index 99% rename from Tests/SKCoreTests/ToolchainRegistryTests.swift rename to Tests/ToolchainRegistryTests/ToolchainRegistryTests.swift index f2df8b04..cc0fcff5 100644 --- a/Tests/SKCoreTests/ToolchainRegistryTests.swift +++ b/Tests/ToolchainRegistryTests/ToolchainRegistryTests.swift @@ -10,10 +10,9 @@ // //===----------------------------------------------------------------------===// -@_spi(Testing) import SKCore -import SKSupport import SKTestSupport import TSCBasic +import ToolchainRegistry import XCTest import enum PackageLoading.Platform