> On Apr 28, 2016, at 6:44 PM, Andrew Bennett <[email protected]> wrote:
> 
> Hey, what annotations would I have in this case:
> 
> Module 1:
> Type AType { func foo() { ... } }
> Module 2:
> import Module1
> protocol A { func foo() {...default...} }
> extension AType: A {}
> 

No annotations. AType's implementation of foo is unrelated to its conformance, 
which is satisfied by its existing foo method.


> Also, for your alternatives section:
> 
> protocol A { func foo() {...default...} }
> Type AType: A {
>     func A.foo() {...replacement...}
> }
> 
> I actually prefer this alternative, I think it fixes many issues.

Protocol default implementations do not yet exist.  

In this second, you're suggesting instead of doing "override required", you use 
a naming approach that ties the implementation the specific protocol. I'm not 
really won over by this approach:

* It does clarify why the method is included
* It does not clarify that the method overrides an existing implementation.
* It could be more easily confused when members are required by multiple 
protocols.

-- E

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to