[swift-evolution] Proposal: Add @requires_super attribute

Matthew Johnson matthew at anandabits.com
Wed Dec 16 10:41:48 CST 2015


+1 to this.  Anything that helps ensure inheritance is thought through carefully and used correctly is a win.

> On Dec 16, 2015, at 10:32 AM, Vester Gottfried via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Some class based libraries/frameworks expect the consumer to subclass certain classes and override specific method and require that the super implementation of an overridden method is being called.
> 
> Not calling the super implementation is a common source of bugs that may be prevented if the compiler checks if super is called, like it does in some cases of init().
> 
> Example:
> 
> class Box {
>    @requires_super
>     func addStuff() { ... }
> }
> 
> Overriding class Box's addStuff without calling super.addStuff() should result in an error
> 
> class Chest : Box {
>     override addStuff() {
>          // ERROR: addStuff() requires call to super.addStuff()
>         ...
>     }
> }
> 
> Objective-C developers know this as NS_REQUIRES_SUPER and I think its worth thinking about adapting it.
> 
> I hope my proposal was clear and thanks for reading,
> 
> Gottfried
>  _______________________________________________
> 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/20151216/3c10b76d/attachment.html>


More information about the swift-evolution mailing list