//===----------------------------------------------------------------------===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2024 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 // //===----------------------------------------------------------------------===// #if compiler(>=6) public import LanguageServerProtocol #else import LanguageServerProtocol #endif public typealias OriginId = String /// The prepare build target request is sent from the client to the server to prepare the given list of build targets /// for editor functionality. /// /// To do so, the build server should perform any work that is necessary to typecheck the files in the given target. /// This includes, but is not limited to: Building Swift modules for all dependencies and running code generation scripts. /// Compared to a full build, the build server may skip actions that are not necessary for type checking, such as object /// file generation but the exact steps necessary are dependent on the build system. SwiftPM implements this step using /// the `swift build --experimental-prepare-for-indexing` command. /// /// The server communicates during the initialize handshake whether this method is supported or not by setting /// `prepareProvider: true` in `SourceKitInitializeBuildResponseData`. public struct BuildTargetPrepareRequest: RequestType, Hashable { public static let method: String = "buildTarget/prepare" public typealias Response = VoidResponse /// A list of build targets to prepare. public var targets: [BuildTargetIdentifier] /// A unique identifier generated by the client to identify this request. /// The server may include this id in triggered notifications or responses. public var originId: OriginId? public init(targets: [BuildTargetIdentifier], originId: OriginId? = nil) { self.targets = targets self.originId = originId } }