Environment Information
Provide at least:
- JRuby version (
jruby -v) and command line - 10.1.0.0
- Operating system and platform (e.g.
uname -a) - Arch Linux
My code is something like the following:
Ruby:
def some_method(arg = {})
com.my_org.groovy.SomeClass.method(arg)
end
some_method(name: 'foo')
Groovy:
class SomeClass {
method(Map arg = [:]) {
arg['foo'] = 10
}
}
Ruby is calling into Groovy and passing a Ruby hash which is updated in Groovy. This used to work in 10.0.5.0. 10.1.0.0 blows up with:
Java::JavaLang::IllegalArgumentException:
argument type mismatch
# jdk.internal.reflect.DirectMethodHandleAccessor.invoke(jdk/internal/reflect/DirectMethodHandleAccessor.java:108)
# java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:565)
# org.codehaus.groovy.reflection.CachedMethod.invoke(org/codehaus/groovy/reflection/CachedMethod.java:343)
# groovy.lang.MetaMethod.doMethodInvoke(groovy/lang/MetaMethod.java:328)
# groovy.lang.MetaClassImpl.setProperty(groovy/lang/MetaClassImpl.java:2900)
# groovy.lang.MetaClassImpl.setProperty(groovy/lang/MetaClassImpl.java:3897)
# org.codehaus.groovy.runtime.InvokerHelper.setProperty(org/codehaus/groovy/runtime/InvokerHelper.java:194)
# org.codehaus.groovy.runtime.DefaultGroovyMethods.putAt(org/codehaus/groovy/runtime/DefaultGroovyMethods.java:439)
# org.codehaus.groovy.runtime.dgm$638.doMethodInvoke(org/codehaus/groovy/runtime/dgm$638)
# groovy.lang.MetaClassImpl.doInvokeMethod(groovy/lang/MetaClassImpl.java:1341)
# groovy.lang.MetaClassImpl.invokeMethod(groovy/lang/MetaClassImpl.java:1096)
# groovy.lang.MetaClassImpl.invokeMethod(groovy/lang/MetaClassImpl.java:1009)
# org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(org/codehaus/groovy/runtime/InvokerHelper.java:633)
# org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(org/codehaus/groovy/runtime/InvokerHelper.java:624)
# org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java:183)
# com.my_org.groovy.SomeClass.method(com/my_org/groovy/SomeClass.groovy:33)
Environment Information
Provide at least:
jruby -v) and command line - 10.1.0.0uname -a) - Arch LinuxMy code is something like the following:
Ruby:
Groovy:
Ruby is calling into Groovy and passing a Ruby hash which is updated in Groovy. This used to work in 10.0.5.0. 10.1.0.0 blows up with: