DIP 1034--Add a Bottom Type (reboot)--Formal Assessment Begins
Dennis
dkorpel at gmail.com
Wed Feb 3 19:00:20 UTC 2021
On Wednesday, 3 February 2021 at 18:24:06 UTC, Imperatorn wrote:
> Is there a short explanation of why this was done and what it
> enables?
It is done to give better semantics to certain things that
currently have special cases in the compiler. E.g. the compiler
has an internal list of functions that don't return, and
`typeof(null)` is a bit of a special case.
This enables:
- Writing your own 'panic' function that the compiler knows
terminates control flow (similar to assert(0)) so you don't have
to write an unreachable `return` or `break`.
- Throwing exceptions in lambda's: `() => throw new Exception("")`
- Accepting `null` in a template taking a generic pointer `T*`
- Recognizing the empty list `[]` in template functions
(currently it is a `void[]`)
More information about the Digitalmars-d-announce
mailing list