When the build system sends an update for build targets, update the index for the files in those targets

For each file in the changed targets, we still check whether it has an up-to-date unit based on timestamps. The important thing for this change is that we start indexing files for which we only receive build settings after an update from the build server.
This commit is contained in:
Alex Hoppen
2025-02-26 14:26:33 -08:00
parent 1a32c4a9f7
commit 1c968226f1
6 changed files with 109 additions and 19 deletions

View File

@@ -37,9 +37,15 @@ package actor TestBuildSystem: MessageHandler {
connectionToSourceKitLSP.send(OnBuildTargetDidChangeNotification(changes: nil))
}
package nonisolated var supportsPreparation: Bool { false }
private let initializeData: SourceKitInitializeBuildResponseData
package init(connectionToSourceKitLSP: any Connection) {
package init(
initializeData: SourceKitInitializeBuildResponseData = SourceKitInitializeBuildResponseData(
sourceKitOptionsProvider: true
),
connectionToSourceKitLSP: any Connection
) {
self.initializeData = initializeData
self.connectionToSourceKitLSP = connectionToSourceKitLSP
}
@@ -90,6 +96,8 @@ package actor TestBuildSystem: MessageHandler {
handle(request, using: self.workspaceBuildTargetsRequest)
case let request as WorkspaceWaitForBuildSystemUpdatesRequest:
handle(request, using: self.workspaceWaitForBuildSystemUpdatesRequest)
case let request as BuildTargetPrepareRequest:
handle(request, using: self.prepareTarget)
default:
reply(.failure(ResponseError.methodNotFound(type(of: request).method)))
}
@@ -101,7 +109,8 @@ package actor TestBuildSystem: MessageHandler {
version: "",
bspVersion: "2.2.0",
capabilities: BuildServerCapabilities(),
data: nil
dataKind: .sourceKit,
data: initializeData.encodeToLSPAny()
)
}
@@ -148,6 +157,10 @@ package actor TestBuildSystem: MessageHandler {
return buildSettingsByFile[request.textDocument.uri]
}
func prepareTarget(_ request: BuildTargetPrepareRequest) async throws -> VoidResponse {
return VoidResponse()
}
package func waitForBuildSystemUpdates(request: WorkspaceWaitForBuildSystemUpdatesRequest) async -> VoidResponse {
return VoidResponse()
}