groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ocs@ocs" <...@ocs.cz>
Subject Re: suggestion: ImplicitSafeNavigation annotation
Date Tue, 14 Aug 2018 16:46:38 GMT
Jochen,

> On 14 Aug 2018, at 6:25 PM, Jochen Theodorou <blackdrag@gmx.org> wrote:
> Am 14.08.2018 um 15:23 schrieb ocs@ocs:
>> H2,
>>> However, “a+b” should work as one would expect
>> Absolutely. Me, I very definitely expect that if a happens to be null, the result
is null too. (With b null it depends on the details of a.plus implementation.)
> 
> the counter example is null plus String though

Not for me. In my world, if I am adding a string to a non-existent object, I very much do
expect the result is still a non-existent object. Precisely the same as if I has been trying
to turn it to lowercase or to count its character or anything.

Whilst I definitely do not suggest forcing this POV to others, to me, it seems perfectly reasonable
and 100 per cent intuitive.

Besides, it actually (and expectably) does work so, if I use the method-syntax to be able
to use safe navigation:

===
254 /tmp> <q.groovy 
String s=null
println "Should be null: ${s?.plus('foo')}"
255 /tmp> /usr/local/groovy-2.4.15/bin/groovy q
WARNING: An illegal reflective access operation has occurred
... ...
Should be null: null
256 /tmp> 
===

which is perfectly right. Similarly, a hypothetical “null?+'foo'” or “@ImplicitSafeNavigation
... null+foo” should return null as well, to keep consistent.

(Incidentally, do you — or anyone else — happen to know how to get rid of those pesky
warnings?)

Thanks and all the best,
OC




Mime
View raw message