added a comment - - edited
The problem is how to fix this. We cannot fix this without breaking code at another place. The call(Object...) could be called with call('a','b') or with def x=['a','b'] as Object; call(x). For the call method they are the same, but for the doCall methods they are not!
For example... let us say we add a doCall(Object...) method, then either we would let it do what call does and in the end have the same problem and nothing fixed, or we change the type of the implicit it to be an Object instead of being an Object. The disadvantages of this are the semantic change for the much implicit it parameter, which will break a lot of code, and that you will then never get a MissingMethodException from the closure unless you gave in the type yourself. And even then it won't be always correct... assuming you have cl=
, and then do cl('a','b') you expect this to work. So far so good... but cl(x), with x being the Object will still also call that one
The other possible way would be to do what ClosureMetaClass does and not even think about calling the call method, but instead directing to doCall. the result for me: 11 failures and 401 errors in the build.