Building it Brick by Brick

Clashing protocol functions cannot be disambiguated

I'm going to classify this as Swift issue but only because it's a new language. The same problem exists in Objective-C. I've already reported it to Apple and it's on Open Radar as well.

Description

Consider a class implementing two protocols with clashing function declarations (name + all parameter types). Currently there is no mechanism to disambiguate which function is being a) implemented and b) invoked. The compiler collapses the implementation of the clashing function to be invoked for both protocols even though these may have very different semantics (as function name will depend on the protocol context)

Regarding implementation, I propose that it's disambiguated with extensions. Allow the following: