[Sema] Forbid leaking implementation-only imported types in SPI decls #31744
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.
The use of
@_spi(Secret) @_implementationOnly import Lib
means that the API andSecret
SPI ofLib
is imported for use in local implementation details and the dependency onLib
is hidden from all clients. This PR fixes a flaw allowing types imported as implementation-only to be exposed in the SPI of the local module. This could lead to the compiler emitting an invalid .private.swiftinterface file that would use types in SPI signatures without the related import hidden from even internal clients.We are considering changing the meaning of such an import but for now let’s make sure to enforce the expected behavior in a consistent way.