Witness selection should pick exact matches for effect overloads #65840
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.
You can overload a function based on its
async
-ness, and resolution is carried out based on async-ness of calling context.But during protocol conformance checking, for an
async
requirement we were accidentally choosing the non-async overload instead of the
asyncone. The
asyncone is the choice people would expect, since the
async` requirement is in essence the "context" that forwards to the underlying witness. This intended behavior is also inferred from:#40088
The problem boiled down to a bad check when categorizing the witness matches prior to ranking them.
Resolves rdar://109135488 / #60318
TODO: