Commits

Doug Gregor committed 3c2fb97bdf5
Introduce TypeBase::isExistentialType(), to determine whether a given type is either a protocol type or a protocol composition type. The long form of this query returns the minimal set of protocol declarations required by that existential type. Use the new isExistentialType() everywhere that we previously checked just for ProtocolType, implementing the appropriate rules. Among other things, this includes: - Type coercion - Subtyping relationship - Checking of explicit protocol conformance - Member name lookup Note the FIXME for IR generation; we need to decide how we want to encode the witnesses for the different protocols. This is most of <rdar://problem/11548207>. Swift SVN r2086