[fpc-pascal] Optional param modifier
Benito van der Zander
benito at benibela.de
Sun Apr 14 01:02:26 CEST 2019
>> Perhaps there could be the opposite modifier, so the function cannot be called with nil. Like
> Interesting idea but I’d have to think about it more to know if this is a real problem I’ve ever experienced.
for example, I store some interfaces in a list, and just replaced the
default list with a faster list that assumes all interfaces in the list
are non-nil. (When you know the interface is non-nil, you can replace
the automatic reference counting with a direct call to ._addref, which
is faster. )
But then it crashed because somewhere it was used with a nil interface.
There it would have been useful to mark the new function as only non-nil
accepting, so that it is clear it cannot be used like the old function,
and the compiler have made sure there is no call with nil
>
> Well, as far as the "optional" part goes, the benefits of it will be
> fairly limited. Object variables occur in many places, and all of them
> can have the nil value, and the compiler has no idea if you did the
> check.
>
> You pick a tiny subset of those cases, and attempt to add protection
> to it. Given the gain (or rather absence of it, according to the
> microscopic size of that subset) the effort (and chance of false
> positives) is not worth it.
You would need to have optional or non-nil markers at every variable,
before it becomes really useful.
Benito
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20190414/9d3c9606/attachment.html>
More information about the fpc-pascal
mailing list