Introducing role keywords to reduce hard-to-find bugs

Either leave off the protocol qualifier or have two functions (they're distinct entities):

extension MyType {
  func ProtocolA.foo() { }
  func ProtocolB.foo() { }
}

I suspect that this situation is quite rare.

Doug