Implementing a generic protocol P in a base class B and redefining the same typealias of the generic protocol P both in the base class B and in a subclass S breaks type safety in combination with a genetic function on P .

Attachment "TypeSafety.swift" is an example of broken type safety where It's possible to assign a String to an Int

Attachment "RunTimeCrash.swift" is an example of broken type safety and a run time crash assigning a tuple (Int, Int) to a String

Both attachments reproduce the issue in Swift 2.2 and Swift 3.0