[5.5] SIL: Private setters need at least hidden visibility for key paths in more cases. #38534
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.
Explanation: Forming a key path to a public (or internal with
-enable-testing
) property with aprivate(set)
setter from another file in the same module would hit linker errors, because the private setter's symbol was not exposed to the key path literals from other files. This was previously fixed for declarations with effective internal visibility, but would break when testing was enabled, or when the getter was public.Issue: rdar://78523318
Testing: Test case from Radar; Swift CI
Reviewed by: @slavapestov
Risk: Low, generalizes an existing fix to cover more cases
Scope: Improves an existing bug fix. Some users are experiencing this as a regression because they enable testing and their code breaks again after receiving the initial fix.