Sema: Skip missing async requirements of Obj-C protocols consistently #72178
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.
Requirements of Obj-C protocols that take a completion handler get imported with an
async
sibling requirement which can be fulfilled instead. Exactly one of these two requirements should be fulfilled. When resolving value witnesses ad-hoc, the compiler would only skip diagnosing a missing witness of an async requirement if the sibling requirement were fulfilled and there were zero viable matches. It shouldn't matter how many viable matches there are, though, since the alternative requirement is already witnessed.There is no test case yet because when this problem reproduces, an assertion about resolving a witness after conformance checking is "complete" fails. A more significant overhaul of this logic should come later, but short-term we must fix source compatibility.
Resolves rdar://124145619