Revert protocol selector conflict changes for 5.7 and add a workaround #60315
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.
In #41828, I attempted to fix a longstanding bug in the decl checker which caused us to not diagnose protocol requirements with conflicting ObjC selectors. Unfortunately, subsequent testing repeatedly turned up exceptions and refinements, necessitating #59479, #59743, and #60081. The latest round of testing indicates that further refinement is still necessary, but we are running out of time to stabilize this change for 5.7.
This PR reverts all of this work and instead implements a low-risk workaround to make the test case in #59479 produce a generated header that clang will not warn about. In other words, Swift 5.7 will now behave as Swift 5.6 did except that the generated header will suppress an additional clang warning. I am reverting this work only in release/5.7, and will continue refining the new behavior in main.
Fixes rdar://97810819.