[swift-evolution] Add code to super methods.

Michael Ilseman milseman at apple.com
Thu Nov 24 17:09:34 CST 2016


> On Nov 17, 2016, at 2:54 AM, Tino Heth via swift-evolution <swift-evolution at swift.org> wrote:
> 
> An equivalent of "NS_REQUIRES_SUPER" (hopefully with a better name ;-) has been requested several times, but never got the momentum it deserves.
> Considering the current confusion (especially in UIKit), it would be really nice to have some help from the compiler, and I wonder how composition and protocols would be helpful here at all.
> 


As an intermediary measure, this seems like an interesting QoI improvement for the compiler: warn when super.foo() is not called in the overridden method. This is probably best done through a Clang-side attribute to begin with (as UIKit and others are the biggest bang for the buck for this), and of course some kind of NS_* convenience macro could be added.

What are your thoughts on this?

Just to throw out a strawman:

// Warn if override doesn’t begin with “super.foo()”
__attribute(swift_requires_super_call_at_begin) 

 // Warn if override doesn’t end with “super.foo()”
__attribute(swift_requires_super_call_at_end)


> I guess the problem is that there are to many options for this feature without an obvious favorite: Not only for the keywords, but also for the exact semantic.
> 
> Additionally, there are imho already to many access levels (private, fileprivate, internal, public, extendable?, open), so I hope we'll someday find a solution that is powerful enough to replace the special willSet/didSet treatment for properties as well.
> 
> So unless somebody has a real flash of genius, I guess it's better to delay discussion until there is a chance for new proposals to be accepted.
> 
> Tino
> _______________________________________________
> 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/20161124/e22fc2d0/attachment.html>


More information about the swift-evolution mailing list