Commits

Joe Groff committed e6d8787f320
InheritedProtocolConformance: Return the conforming type's DeclContext Not the superclass's. This can cause mapping types out of context to not resolve archetypes, because the DeclContexts won't match, e.g: internal class _IteratorBox<Base: IteratorProtocol> : _AnyIteratorBoxBase<Base.Element> { internal override func next() -> Base.Element? } Here, _IteratorBox's associated type Element for IteratorProtocol is Base.Element, but the conformance comes from the superclass, _AnyIteratorBoxBase. This meant that Base.Element couldn't be mapped to an interface type, which should be: (dependent-member (generic-type-parameter depth=0 index=0) member=Element) The old behavior also broke inherited conformances across serialization boundaries, because subclasses would fail to inherit conformances a deserialized class inherited itself from a base class (SR-1158).