[5.9.0][Macros] Always consider pre-macro-expansion conformances as subsumed by other conformance entry kinds, before considering availability. #67884
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.
ConformanceEntry
so that the compiler can reason about which conformances will be added prior to macro expansion, and an explicitConformanceEntry
is added after the macro is expanded. However, the ranking between these conformances was considering availability before the conformance entry kind; if the macro-expanded conformance is less available than the always-available placeholder entry, the placeholder entry would be chosen. This lead to the conformance being dropped on the floor in serialization and SILGen, because the placeholder entry is just a placeholder, and when we create aNormalProtocolConformance
for it, it's not complete. The fix is to swap the order of the availability check and the check for pre-macro-expansion placeholder conformance entries.ConformanceLookupTable::compareConformances
.