proposed @noreturn attribute
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jul 18 15:40:30 PDT 2017
On 18.07.2017 23:35, Moritz Maxeiner wrote:
>
> Could you explain why `return foo();` is even legal for a `void foo()
> {}`?
Because the ad-hoc decision to make void a type that is not really a
type leads to unnecessary friction, and this exceptional rule removes
the friction in one common special case.
> I wasn't aware of it before and the fact that you can
> (syntactically) return the non-existent return value of `foo` raises
> cognitive dissonance flags for me. I imagine there's a type system reason?
There should be. foo's return type could be a unit type, with just one
value. Then foo does have a return value, but it is always the same and
so does not need to be explicitly tracked.
More information about the Digitalmars-d
mailing list