On 14/04/2019 23:48, Martin Frb wrote:

I admit the contract/assert stuff may have made it seem different. But that is because this approach does not hold up (IMHO). And therefore the closest alternative was presented.

In the very end it is to avoid crashing on nil de-ref. And the contract/assert can help there. Though in a completely different way.

The contract actually can lead to the thing you want. Though you need to complete it for *all* your code, rather than just one or two functions

If/Once you have your entire code base with contracts, you know that any method/function that does not have a "assigned" contract, can return nil (i.e. nil is a documented expected return value / or input )

So at that time, you can enable a compiler warning of the kind you wanted. It would act on all the params/results that per contract can be nil (are not forbidden to be nil).

-----
The only thing you do not have, is the undefined bit. The it can return nil, but I do not want to check it. If you really want that, there will be a directive like {$PUSH}{$R-} .... {$POP}.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to