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> 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 qWARNING: 
Using incubator modules: jdk.incubator.httpclientbyteValue works: OKplus does 
not: 3not even: 3Elsewhere plus works: OK769 /tmp> ===
Thanks and all the best,OC

Reply via email to