isn't it perfectly fine to conform to multiple unrelated protocols which both require the same member?
Or to declare protocol conformance in some unrelated module?

Am 2016-09-22 07:15, schrieb Karl via swift-evolution:
I would like to make it a requirement if not inside a protocol
extension which declares a conformance, and actually build the
protocol name in to the member in an ABI-breaking way.

IMO, this is much too restrictive.
When we force the protocol name into the member, we make it impossible to conform to multiple protocols.
Well ok, we could create alias names for all protocols.
But often you don't know which protocols to conform to when you compile your module!

What about:

 -- module A --
 class A {
   func foo() {}

 -- module B --
 protocol Foo {
   func foo()
 extension A: Foo {}

What is your ABI name for A.foo()?

Let's keep it simple!
If a simple warning about unrelated methods in a protocol conformance extension solves 95% of our problem, then we shouldn't overengineer and throw away all our flexibility just to be 100% explicit about which protocol uses which members.

swift-evolution mailing list

Reply via email to