mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
111 lines
3.6 KiB
Swift
111 lines
3.6 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import BuildServerProtocol
|
|
import LanguageServerProtocol
|
|
import SKOptions
|
|
import ToolchainRegistry
|
|
|
|
import struct TSCBasic.AbsolutePath
|
|
|
|
/// Build system to be used for testing BuildSystem and BuildSystemDelegate functionality with SourceKitLSPServer
|
|
/// and other components.
|
|
package actor TestBuildSystem: BuiltInBuildSystem {
|
|
package static func projectRoot(for workspaceFolder: AbsolutePath, options: SourceKitLSPOptions) -> AbsolutePath? {
|
|
return workspaceFolder
|
|
}
|
|
|
|
package let projectRoot: AbsolutePath
|
|
package let indexStorePath: AbsolutePath? = nil
|
|
package let indexDatabasePath: AbsolutePath? = nil
|
|
|
|
package weak var delegate: BuildSystemDelegate?
|
|
|
|
private weak var messageHandler: BuiltInBuildSystemMessageHandler?
|
|
|
|
package func setDelegate(_ delegate: BuildSystemDelegate?) async {
|
|
self.delegate = delegate
|
|
}
|
|
|
|
/// Build settings by file.
|
|
private var buildSettingsByFile: [DocumentURI: SourceKitOptionsResponse] = [:]
|
|
|
|
/// Files currently being watched by our delegate.
|
|
private var watchedFiles: Set<DocumentURI> = []
|
|
|
|
package func setBuildSettings(for uri: DocumentURI, to buildSettings: SourceKitOptionsResponse?) async {
|
|
buildSettingsByFile[uri] = buildSettings
|
|
await self.messageHandler?.sendNotificationToSourceKitLSP(DidChangeBuildTargetNotification(changes: nil))
|
|
}
|
|
|
|
package nonisolated var supportsPreparation: Bool { false }
|
|
|
|
package init(
|
|
projectRoot: AbsolutePath,
|
|
messageHandler: any BuiltInBuildSystemMessageHandler
|
|
) {
|
|
self.projectRoot = projectRoot
|
|
self.messageHandler = messageHandler
|
|
}
|
|
|
|
package func sourceKitOptions(request: SourceKitOptionsRequest) async throws -> SourceKitOptionsResponse? {
|
|
return buildSettingsByFile[request.textDocument.uri]
|
|
}
|
|
|
|
package func defaultLanguage(for document: DocumentURI) async -> Language? {
|
|
return nil
|
|
}
|
|
|
|
package func toolchain(for uri: DocumentURI, _ language: Language) async -> Toolchain? {
|
|
return nil
|
|
}
|
|
|
|
package func inverseSources(request: InverseSourcesRequest) -> InverseSourcesResponse {
|
|
return InverseSourcesResponse(targets: [BuildTargetIdentifier.dummy])
|
|
}
|
|
|
|
package func prepare(
|
|
targets: [BuildTargetIdentifier],
|
|
logMessageToIndexLog: @escaping @Sendable (_ taskID: IndexTaskID, _ message: String) -> Void
|
|
) async throws {
|
|
throw PrepareNotSupportedError()
|
|
}
|
|
|
|
package func scheduleBuildGraphGeneration() {}
|
|
|
|
package func waitForUpToDateBuildGraph() async {}
|
|
|
|
package func topologicalSort(of targets: [BuildTargetIdentifier]) -> [BuildTargetIdentifier]? {
|
|
return nil
|
|
}
|
|
|
|
package func targets(dependingOn targets: [BuildTargetIdentifier]) -> [BuildTargetIdentifier]? {
|
|
return nil
|
|
}
|
|
|
|
package func registerForChangeNotifications(for uri: DocumentURI) async {
|
|
watchedFiles.insert(uri)
|
|
}
|
|
|
|
package func unregisterForChangeNotifications(for uri: DocumentURI) {
|
|
watchedFiles.remove(uri)
|
|
}
|
|
|
|
package func didChangeWatchedFiles(notification: BuildServerProtocol.DidChangeWatchedFilesNotification) async {}
|
|
|
|
package func sourceFiles() async -> [SourceFileInfo] {
|
|
return []
|
|
}
|
|
|
|
package func addSourceFilesDidChangeCallback(_ callback: @escaping () async -> Void) async {}
|
|
}
|