> On 14 Jun 2017, at 20:19, Matthew Johnson <matt...@anandabits.com> wrote: > > >> On Jun 14, 2017, at 1:12 PM, Xiaodi Wu via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> On Wed, Jun 14, 2017 at 1:08 PM, Xiaodi Wu <xiaodi...@gmail.com >> <mailto:xiaodi...@gmail.com>> wrote: >> On Wed, Jun 14, 2017 at 1:01 PM, David Hart via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> 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: >> >> This wouldn't work with the fundamental design decision that these are >> optional keywords, which IMO is absolutely key. >> >> ...I may need to take this back; the design has annotations on the default >> and not on the overriding functions, which means there should be no negative >> impact on retroactive conformance (unless I'm mistaken). In that case, it >> might not need to be optional, and then reducing two keywords to one might >> be a nice idea… > > Making them optional is critical for source stability. I think David’s > suggestion is a better overall design but I’m not sure it will fly. It would > require a migrator to add `default` to all default implementations in > protocol extensions in existing code. The window for changes like that may > have already passed.
The Swift 4 compiler in -swift-version 3 modes generates extra warnings: as long as it compiles, it is still source-compatible. >> >> 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@swift.org <mailto:swift-evolution@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 >>> <https://gist.github.com/erica/14283fe18254489c1498a7069b7760c4> >>> >>> Thanks in advance for your thoughtful feedback, >>> >>> -- E >>> >>> _______________________________________________ >>> swift-evolution mailing list >>> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> <https://lists.swift.org/mailman/listinfo/swift-evolution> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> >> >> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution