[swift-users] @noReturn

Rien Rien at Balancingrock.nl
Fri Mar 24 04:22:08 CDT 2017


Excellent!

Love this list ;-)

Regards,
Rien

Site: http://balancingrock.nl
Blog: http://swiftrien.blogspot.com
Github: http://github.com/Balancingrock
Project: http://swiftfire.nl





> On 24 Mar 2017, at 10:12, Philip Erickson <philiperickson at gmail.com> wrote:
> 
> I believe returning Never does what you want, e.g.
> 
> 
> import Foundation
> 
> func findReasonAndTerminate() -> Never
> {
>    let reason: String = findReason()
>    fatalError(reason)
> }
> 
> func findReason() -> String
> {
> 	return "some reason"
> }
> 
> func buildData() -> Data?
> {
> 	return nil
> }
> 
> guard let data = buildData() else { findReasonAndTerminate() }
> 
> 
> On Fri, Mar 24, 2017 at 3:02 AM, Rien via swift-users <swift-users at swift.org> wrote:
> Is there any way to mark a function as “no return”?
> 
> Reason: The compiler generates an error when the else block from a guard does not terminate the execution by either a return or a fatalError. I want to call out to a function and raise the fatalError in that function.
> 
> func findReasonAndTerminate() {
>    let reason: String = ….
>    fatalError(reason)
> }
> 
> main.swift:
> 
> guard let data = buildData() else { findReasonAndTerminate() }
> 
> 
> Currently the work around is to add another fatalError like this:
> 
> guard let data = buildData() else { findReasonAndTerminate(); fatalError }
> 
> 
> but it would be nice to have some attribute like @noReturn:
> 
> @noReturn
> func findReasonAndTerminate() { … }
> 
> 
> Regards,
> Rien
> 
> Site: http://balancingrock.nl
> Blog: http://swiftrien.blogspot.com
> Github: http://github.com/Balancingrock
> Project: http://swiftfire.nl
> 
> 
> 
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
> 



More information about the swift-users mailing list