[swift-evolution] Idea: change "@noreturn func f()" to "func f() noreturn"
Jacob Bandes-Storch
jtbandes at gmail.com
Thu Feb 25 15:44:36 CST 2016
Premise: there are multiple ways of describing control-/data-flow when a
function is called:
func x() *-> T* // x returns a value, of type T, to the caller
func x() *throws* // x may throw an error to the caller
func x() *throws -> T* // x may throw an error, and also return a value
func x(...) *rethrows* ... // if a closure argument can throw an error,
x may also throw
*@noreturn* func x() // x never returns to the caller
"noreturn" is currently spelled as an attribute, but like "throws" /
"rethrows" / "-> T", it's really describing how control flow works.
IMO this calls for consistency: whatever happens "after" the function is
called should appear "after" the parameter list.
func x() *noreturn* {
...
}
Thoughts?
Jacob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160225/fe47cd22/attachment.html>
More information about the swift-evolution
mailing list