Sorry, initially sent off-list:

I think this proposal is a great idea. But I would vote for the alternative of 
only having default and implicitly deducing extend when default is not 
specified: it would mimic how override works with only one keyword, it would 
not introduce a completely new keyword, and it would provide progressive 
disclosure (your usually start implementing types before going deeper in 
default implementations). Yes, it would generate warnings at all current 
default implementations, but it wouldn’t break source compatibility and would 
provide a lot of value for developers.

Perhaps a future version of Swift could transform that warning into an error to 
provide the most value and really mirror the override behavior.

> On 14 Jun 2017, at 19:11, Erica Sadun via swift-evolution 
> <[email protected]> wrote:
> 
> Some pals and I have been kicking an idea around about introducing better 
> ways to support the compiler in protocol extensions. We want to eliminate 
> some hard-to-detect bugs. We've been brainstorming on how to do this without 
> affecting backward compatibility and introducing a minimal impact on 
> keywords. 
> 
> We'd love to know what you think of our idea, which is to introduce "role" 
> keywords. Roles allow the compiler to automatically check the intended use of 
> a extension member definition against its protocol declarations, and emit 
> errors, warnings, and fixits as needed.  We think it's a pretty 
> straightforward approach that, if adopted, eliminates an entire category of 
> bugs.
> 
> The draft proposal is here: 
> https://gist.github.com/erica/14283fe18254489c1498a7069b7760c4
> 
> Thanks in advance for your thoughtful feedback,
> 
> -- E
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to