[swift-evolution] [Draft] Change @noreturn to unconstructible return type

T.J. Usiyan griotspeak at gmail.com
Sun Jun 5 13:37:36 CDT 2016


I vote for Bottom or Never. None does not convey "this should not occur or
be evaluated".

On Sun, Jun 5, 2016 at 2:26 PM, Антон Жилин <swift-evolution at swift.org>
wrote:

> The following names were suggested: NoReturn, Bottom, None, Never.
> I would pick None, because it looks like opposite to Any and fits nicely
> in generic types.
>
> I would prefer the type to be simple, and be implemented as a case-less
> enum (not a bottom value, as in Haskell).
>
> None should be a usual enum, with no compiler magic except that functions
> returning None are equivalent to current @noreturn.
>
> Example 1.
> let x: None?
> // ...
> let y = x!
>
> It will trap in runtime not because we discover scary bottom thing, as in
> Haskell, but because x had value Optional.none at that moment and we
> asserted otherwise.
> We could prove that it is always true in this case, but compiler must be
> stupid about this.
>
> Example 2.
> Compiler should allow including None in structures. Error will show up in
> constructor, when we will not be able to initialize the field.
>
> Example 3.
> None in an enum case makes that case never appear in values of such a
> type. But compiler can not know about that.
>
> - Anton
>
> _______________________________________________
> 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/20160605/5572a63d/attachment.html>


More information about the swift-evolution mailing list