On 7/18/2017 7:14 PM, Nicholas Wilson wrote:
It describe the behaviour of the function: I think it is neither necessary nor a good idea to express it as a type. assert(0) is already accepted as a valid return statement of any type.

I can't continue this without being repetitive, so we'll just have to disagree.


The backends for DMD, LDC and GDC would not be affected at all by the addition of a bottom type to the front end, and it would be trivial for the glue code to add the noreturn attribute for functions that return the bottom type.

Said glue would be unnecessary with an attribute *that already exists*.

In the glue code, replace:

    if (function attribute is 'noreturn')
        set backend attribute to 'noreturn';

with:

    if (function return type is 'bottom')
        set backend attribute to 'noreturn';
        set backend function return type to 'void';

and it should be ready to rock :-)

Reply via email to