[swift-users] @noReturn

Philip Erickson philiperickson at gmail.com
Fri Mar 24 04:12:19 CDT 2017


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170324/f5821203/attachment.html>


More information about the swift-users mailing list