I have to confess I do like the NPE. It is usually one of the most easy to fix exceptions. But well, not everyone likes to program with that I understand ;)

More comments inline

Am 14.08.2018 um 15:07 schrieb ocs@ocs:
[...]
For the moment, the best solution — far as I have been able to ascertain — consists of [*]

(a) at launch, setting own DelegatingMetaClass subclass for a Null.metaclass; it essentially would return null from invokeMethod, but still needs to process special cases (like e.g., null.is <http://null.is>(foo)) explicitly;

so for general Groovy... how are we supposed to recognized in a transform if "is" has been replaced?

(b) since the above for some godforsaken reason does not work for property access at all, still implement an ASTT with a ClassCodeExpressionTransformer to set expression.safe=true for get/setProperty, guarding explicitly against the known problematic cases (e.g., super.getProperty).

are you saying x?.foo will NPE if x is null? Or that x?.getFoo() will NPE in that case? Not sure how to read your comment.

For all I know, this probably would not work properly with @CompileStatic (which I do not use at all myself, but others do frequently).

the result type could be a problem... Worth to check.

Trust me, been there, done that. I am pretty darn sure it would be /infinitely/ easier and, what's important, more reliable in the core with an explicit compiler support.

How about making a small github project to dump the current state there?

bye Jochen

Reply via email to