[swift-evolution] Proposal: Add @requires_super attribute
Marc Knaup
marc at knaup.koeln
Wed Dec 16 10:46:47 CST 2015
+1 always had such issues with UIViewController's lifecycle methods.
But edge cases need to be considered like "throws" for example.
Do I need to call super before I throw something?
On Wed, Dec 16, 2015 at 5:41 PM, Matthew Johnson via swift-evolution <
swift-evolution at swift.org> wrote:
> +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
>
>
>
> _______________________________________________
> 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/affeb3f4/attachment.html>
More information about the swift-evolution
mailing list