[swift-evolution] [Pitch] Introducing role keywords to reduce hard-to-find bugs

David Hart david at hartbit.com
Wed Jun 14 13:01:19 CDT 2017


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 <swift-evolution at swift.org> 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
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170614/700bb6c7/attachment.html>


More information about the swift-evolution mailing list