Commits

Jordan Rose committed e77e0587c75
Enforce maximum allowed access for extensions with 'where' clauses. Otherwise, we end up with declarations with public access that do not have public 'self' types. These declarations can then be used by other modules, which may end up trying to access non-external symbols. This closes a loophole currently in use by the standard library, so the '_prext_ReverseIndexType' and '_ReverseCollectionType' protocols become public for now. In order to keep the API impact minimized, extensions involving these protocols now extend them directly, so that all of the "private" stuff shows up in one place in the generated interface. This is not a long-term solution, but it's no worse than the rest of the underscore rules in the standard library. rdar://problem/21380336 tracks relaxing access restrictions for protocol conformances when the witnesses come from a different type, like a protocol extension. This requires some SILGen work to do correctly. Finishes rdar://problem/21559986 Swift SVN r30612