mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Previously, if we were looking for, say, ForwardIndex conformance on Int, we would see that Int is a BidirectionalIndex, and that BidirectionalIndex refines ForwardIndex...but we'd have no way to get a conformance from BidirectionalIndex (since it's not really BidirectionalIndex that conforms to ForwardIndex, but rather Int-via-BidirectionalIndex). Change Module::lookupConformance's helper findExplicitConformance to actually keep conformance records around and walk those instead of just looking at the ProtocolDecl's list of adopted protocols. I don't have a minimal test case for this, but it fixes <rdar://problem/15691181>, which allows DictionaryIndex to just adopt BidirectionalIndex and have the ForwardIndex part be inferred. The problem manifested as a crash in test/stdlib/Dictionary.swift, which just uses a Dictionary in very basic ways, so I imagine we'll notice if this regresses. Swift SVN r11521
42 KiB
42 KiB