On 23.05.2016 23:09, Xiaodi Wu via swift-evolution wrote:
One option, which I think is entirely valid, is to decide that extensions
on a protocol are not to be shadowed by a conforming type.

Just to have the whole picture for those, who is reading your discussion with Matthew : yes, extensions(that were not declared in protocol itself) are not shadowed by a conforming type(if called by reference which type is protocol, i.e let p = MyProtocol = MyType()). And I agree, that when you know this - this is a simple rule.

But, you have to remember another rules:
* default implementation of protocol requirement (in protocol extension) - *will* be shadowed by type's method *if* implemented *exactly* in the same type that conformed to protocol * default implementation of protocol requirement (in protocol extension) - will *not* be shadowed *if* implemented in derived type which base type conformed to protocol (i.e. type has implemented the method, type is conformed to protocol, but protocol's default implementation will be called)

For me (now), it seems like these rules has strong reasons and we will not change them. OK. But IMO we definitely needs some help from Swift to avoid possible *not easy to fix* errors related to these rules.
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to