Commits

Doug Gregor committed 926e3711d0d
Only permit inheritance of protocol conformance when it is semantically valid. A protocol conformance of a class A to a protocol P can be inherited by a subclass B of A unless - A requirement of P refers to Self (not an associated type thereof) in its signature, + *except* when Self is the result type of the method in P and the corresponding witness for A's conformance to B is a DynamicSelf method. Remove the uses of DynamicSelf from the literal protocols, going back to Self. The fact that the conformances of NSDictionary, NSArray, NSString, etc. to the corresponding literal protocols use witnesses that return DynamicSelf makes NSMutableDictionary, NSMutableArray, NSMutableString, and other subclasses still conform to the protocol. We also correctly reject attempts to (for example) create an NSDecimalNumber from a numeric literal, because NSNumber doesn't provide a suitable factory method by which any subclass can be literal convertible. Swift SVN r14204