[swift-evolution] [Review] SE-0102: Remove @noreturn attribute and introduce an empty NoReturn type

Denis Nikitenko d.nikitenko at icloud.com
Thu Jun 23 15:56:25 CDT 2016


 * What is your evaluation of the proposal? 

+1.  I think that overall it’s a step in the right direction.

 * Is the problem being addressed significant enough to warrant a change to Swift? 

A function that never returns is fundamentally different from any other function.  Having this property captured in the function type - rather than additional meta-programming attributes - makes sense.  It also prevents the language users from creating nonsensical function signatures, such as @noreturn func test() -> Int (which happily compiles and runs fine in XCode 8).

The NoReturn type has precedence in both computer science theory and modern general purpose programming languages.  I suspect a more generally named universal bottom type would be more "future-proof", but I have no strong opinion on the matter.

While this is a breaking change, it affects a small corner of the language.  I see the benefit outweighing the cost.

 * Does this proposal fit well with the feel and direction of Swift? 

Yes.

 * If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those? 

I am aware of the existence of the bottom type in Scala and Rust, but I haven’t worked with them.

 * How much effort did you put into your review? A glance, a quick reading, or an in-depth study?

A quick review, as well as a quick scan through the literature. 


More information about the swift-evolution mailing list