Pyry Jahkola via swift-evolution <swift-evolution@...> writes: > On 22 Jun 2016, at 14:47, Charlie Monroe via swift-evolution <swift- [email protected]> wrote: > > I can live with Never. But the proposed NoReturn is a single-case solution and would eventually require a code-breaking change anyway were the bottom type implemented under a different name. > > Excuse me, but it seems to me you might be missing one important point about the proposal: there's going to be no “the” bottom type — any enum with no cases would act as one if the proposal is accepted. The standard library would just happen name one to stand as the preferred default. > In other words (unless I'm mistaken), no compiler magic proposed about a specific (`NoReturn` or `Never`) empty enum. All the proposed “magic” would be about uninhabited types (link to specific section in the proposal) as return types. > > — Pyry
I think a good design would still be to use a single "main" empty type throughout the standard library. Let's look at a silly example: func swapReturnThrow<T, E>(block: () throws E -> T) throws T -> E where T: ErrorType, E: ErrorType If T is NoReturn or E is NoThrow then swapReturnThrow would return NoThrow and throw NoReturn. These scoped empty types were pulled to a scope where they make no sense. This problem does not occur with a single "main" empty type. But then we must decide on its name now. _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
