Eric, I fear not:
=== 776 /tmp> /usr/local/groovy-3.0.0-alpha-3/bin/groovy -indy q WARNING: Using incubator modules: jdk.incubator.httpclient byteValue works: OK plus does not: 3 not even: 3 Elsewhere plus works: OK 777 /tmp> /usr/local/groovy-3.0.0-alpha-3/bin/groovy -disable=int q WARNING: Using incubator modules: jdk.incubator.httpclient byteValue works: OK plus does not: 3 not even: 3 Elsewhere plus works: OK 778 /tmp> /usr/local/groovy-3.0.0-alpha-3/bin/groovy -disable=all q WARNING: Using incubator modules: jdk.incubator.httpclient byteValue works: OK plus does not: 3 not even: 3 Elsewhere plus works: OK 779 /tmp> === Thanks and all the best, OC > On 20 Aug 2018, at 4:19 PM, Milles, Eric (TR Technology & Ops) > <eric.mil...@thomsonreuters.com> wrote: > > You may want to disable the int optimization (on by default; off for indy). > I think then primitives would get converted to wrappers and MOP would be > available consistently. > > > From: mg <mg...@arscreat.com> > Sent: Monday, August 20, 2018 7:17 AM > To: dev@groovy.apache.org > Subject: Re: Inconsistent overriding of Interger methods > > Without having looked at the implementation: Wouldn't "performance" be a > plausible explanation why these cases can't be moped up... ? > > -------- Ursprüngliche Nachricht -------- > Von: Paul King <pa...@asert.com.au> > Datum: 20.08.18 02:59 (GMT+01:00) > An: dev@groovy.apache.org > Betreff: Re: Inconsistent overriding of Interger methods > > It appears to be most (all?) primitive/wrapper types not just Integer. > > On Sun, Aug 19, 2018 at 11:00 PM ocs@ocs <o...@ocs.cz <mailto:o...@ocs.cz>> > wrote: > Ladies and gentlemen, > > the debate of null-propagation led me to bumping into a wildly inconsistent > behaviour when one overrides Integer methods through the metaclass. > > To me, this looks like a bug; even if this mess happens to be an intended > behaviour, it is pretty weird (in this case, is it documented anywhere?) > > === > 768 /tmp> <q.groovy > java.lang.Integer.metaClass.byteValue={ -> "OK" } > java.lang.Integer.metaClass.plus={ o -> "OK" } > println "byteValue works: ${1.byteValue()}" > println "plus does not: ${1+2}" > println "not even: ${1.plus(2)}" > ArrayList.metaClass.plus={ o -> "OK" } > println "Elsewhere plus works: ${[]+1}" > 768 /tmp> /usr/local/groovy-3.0.0-alpha-3/bin/groovy q > WARNING: Using incubator modules: jdk.incubator.httpclient > byteValue works: OK > plus does not: 3 > not even: 3 > Elsewhere plus works: OK > 769 /tmp> > === > > Thanks and all the best, > OC >