[5.9 🍒][Dependency Scanning] Consider optional dependencies of @testable textual dependencies with an adjacent binary module #65256
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry-pick of #65234
For a @testable import in program source, if a Swift textual interface dependency is discovered, and has an adjacent binary .swiftmodule, only the binary module will reference the "optional" module dependencies that the built-for-testable module may need to be fully usable.
This change, for @testable direct dependencies of module-under-scan, causes the scanner to open up the adjacent binary .swiftmodule module, and pull in its optional dependencies, and attempt to resolve them. If an optional dependency cannot be resolved on the filesystem, the scanner proceeds silently, without a diagnostic - this is a best-effort attempt to handle testable module dependencies as thoroughly as possible.
Note: Newly-added logic only affects Explicit Module Builds and Dependency Scanning actions.