swiftlang / sourcekit-lsp

Language Server Protocol implementation for Swift and C-based languages
Apache License 2.0
3.3k stars 273 forks source link

Fix incorrect ConfiguredTargets for Package.swift w/ multiple workspaces #1545

Closed plemarquand closed 2 months ago

plemarquand commented 3 months ago

In a project with multiple folders each containing a Package.swift, the bestWorkspace found in workspaceForDocument(uri:) was always the first one encountered.

fileHandlingCapability(for:) checks if there are configured targets for the Package.swift and if there are, the workspace is chosen since the Package.swift is determined to be part of the workspace. However the check in configuredTargets(for:) always returned a target for any Package.swift, even if that Package.swift was not part of the workspace associated with the BuildSystem.

Ultimately this manifested as code completion not working in all but one of the Package.swift files in a multi workspace project.

Some work was done in #1210 to address swiftlang/vscode-swift#768, which is where this issue originated from. However while verifying swiftlang/vscode-swift#768 I found that #1210 didn't fully address code completion of Package.swift files in multi workspace projects.

Also took the opportunity to fix a few deprecation warnings.

ahoppen commented 3 months ago

@swift-ci Please test

ahoppen commented 3 months ago

@swift-ci Please test

ahoppen commented 3 months ago

@swift-ci Please test Windows

plemarquand commented 2 months ago

@ahoppen when you get a moment I think this is ready to be merged.