proposed @noreturn attribute

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Sun Jul 16 13:04:25 PDT 2017


On 16.07.2017 21:49, Guillaume Boucher wrote:
> 
>> I'd say a function with return type Bottom can override any function 
>> in the base class.
> 
> That solves the "Penguin : Bird" step, but not "EvolvedPenguin : 
> Penguin" (which can fly).
> 
> Andrei argues that my example don't comply with a puristic understanding 
> of inheritance.  Maybe that's enough of a reason to not optimize such 
> use cases, but it still shows that pragma(noreturn) is somehow stronger 
> than Bottom.

The issue isn't purism, it is type safety. If you create an 
EvolvedPenguin, upcast it to a Penguin and call the fly method you get 
UB. So noreturn would indeed need to enforce that all overrides are also 
noreturn.


More information about the Digitalmars-d mailing list