mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
The maybeResolveEquivalenceClass() method can deallocate equivalence classes, because it calls updateNestedTypeForConformance(), which calls addSameTypeRequirement(). Therefore, the EquivalenceClass stored inside a ResolvedType could become invalid across calls to maybeResolveEquivalenceClass(). This was a problem in one place in particular, when adding a new same-type constraint between two type parameters. Fix this by not caching the equivalence class of a PotentialArchetype in the ResolvedType implementation. The only time an equivalence class is now stored is when returning an unresolved type, which is acted upon immediately. Fixes <https://bugs.swift.org/browse/SR-12812>, <rdar://problem/63422600>.
2.4 KiB
2.4 KiB