Hi there,

isn't this a bug in the method dispatcher? (Works precisely same way with 
explicit .plus(...)) I would assume "null: null" to be printed out by the last 
command:

===
2016 ocs /tmp> <q.groovy                            
class Foo {
 static main(args) {
    ExpandoMetaClass.enableGlobally()
    Integer.metaClass.plus<<{ Thread foo -> 'thread' } // just to make sure 
adding methods works OK
    Integer.metaClass.plus<<{ org.codehaus.groovy.runtime.NullObject foo -> 
'null' } // does not here, tho
    println "thread: ${7+Thread.currentThread()}"
    println "null: ${7+null}"
  }
}
2017 ocs /tmp> /usr/local/groovy-4.0.5/bin/groovy q
thread: thread
Caught: groovy.lang.GroovyRuntimeException: Ambiguous method overloading for 
method java.lang.Integer#plus.
Cannot resolve which method to invoke for [null] due to overlapping prototypes 
between:
        [class java.lang.Character]
        [class java.lang.String]
        [class java.lang.Number]
        [class java.lang.Thread]
...
===

Thanks,
OC

Reply via email to