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