[WIP] Sema: Resolve type witnesses for conditional conformances early #30700
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.
Resolves SR-7516.
Allows for correctly diagnosing references to default type witnesses with
unsatisfied requirements once we start realizing types in members.
This change also establishes a definite type witness resolution order when associated type collisions occur in the presence of multiple conformances with differing conditional requirements. Previously, depending on validation order, a default type witness for a conditional conformance could satisfy a type requirement for a regular conformance, leading to miscompiles like the following:
Given the conditional requirements of a conformance are satisfied by those
of another conformance, default type witnesses for the former, more general
conformance, can now satisfy type requirements for the latter – but not vice versa – in
case of associated type collisions.
For example, both conformances in the snippets below will associate
X
with a single type witnesssynthesized for the more general conformance to
B
.