swift
1acb61d2 - SIL: Fix SILType::isLoweringOf() to correctly handle opaque archetypes

Commit
1 year ago
SIL: Fix SILType::isLoweringOf() to correctly handle opaque archetypes This predicate is meant to ask if the loweredType is equal to `getLoweredType(pattern, formalType)` for *some* abstraction pattern. If the formal type contained an opaque archetype, we performed a different check, because we asked if loweredEqual is equal to `getLoweredType(AbstractionPattern(formalType), formalType)`. This caused a spurious SIL verifier failure when the payload of an existential contained an opaque archetype, because we lower the payload with the most general AbstractionPattern, so that @thin metatypes become @thick, etc. The regression test exercises this bug, and also another bug that was present in 6.0 but was already fixed on main by one of my earlier refactorings. Fixes rdar://problem/138655637.
Author
Committer
Parents
Loading