Commits

Doug Gregor committed eb4f4643f6d
Protocol conformance: handle derivable requirements before same-named requirements. Other protocols can have requirements that match up with the requirements of derivable protocols. In such cases, deriving the requirement we know about *first* can mean that it will be used to satisfy the requirement of some other protocol. This behavior has always been order-dependent before, and the order changed in Swift 2.0 with the introduction of the protocol conformance table, causing rdar://problem/22476643. Now, when we see a requirement that looks like a derivable requirement, go ahead and satisfy the witness for that derivable requirement. This will, when needed, synthesize an actual witness for the derivable requirement---that can also be used for the original requirement---eliminating the ordering dependency and fixing rdar://problem/22476643. Swift SVN r32191