mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
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 `async` one. The `async` one 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: https://github.com/apple/swift/pull/40088 The problem boiled down to a bad check when categorizing the witness matches prior to ranking them. Resolves rdar://109135488 / https://github.com/apple/swift/issues/60318
626 B
626 B