mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Start visiting transitive fixed bindings for type variables, and stop visiting adjacencies for `gatherConstraint`'s `AllMentions` mode. This improves performance and fixes a correctness issue with the old implementation where we could fail to re-activate a coercion constraint, and then let invalid code get past Sema, causing either miscompiles or crashes later down the pipeline. Unfortunately this change requires us to temporarily drop the non-ephemeral fix for a couple of fairly obscure cases where the overload hasn't yet been resolved. The logic was previously relying on stale adjacency state in order to re-activate the fix when the overload is bound, but it's not connected on the constraint graph. We need to find a way to connect constraints to unresolved overloads they depend on. Resolves SR-12369.