Allow injection of build systems into SourceKitLSP

This allows us to clean up the creation of `TestBuildSystem` a little bit because the tests can create `TestBuildSystem` instead of retrieving it from the `BuildSystemManager`.

rdar://142906050
This commit is contained in:
Alex Hoppen
2025-01-15 15:57:21 -08:00
parent 403f88e293
commit 31b1909ce1
25 changed files with 192 additions and 165 deletions

View File

@@ -36,8 +36,13 @@ import struct TSCBasic.AbsolutePath
/// Returns `nil` if no build system can handle this workspace folder.
package func determineBuildSystem(
forWorkspaceFolder workspaceFolder: DocumentURI,
options: SourceKitLSPOptions
options: SourceKitLSPOptions,
hooks: BuildSystemHooks
) -> BuildSystemSpec? {
if let workspaceURL = workspaceFolder.fileURL, let buildSystemInjector = hooks.buildSystemInjector {
return BuildSystemSpec(kind: .injected(buildSystemInjector), projectRoot: workspaceURL)
}
var buildSystemPreference: [WorkspaceType] = [
.buildServer, .swiftPM, .compilationDatabase,
]