Details
-
Sub-task
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.4.6
-
None
-
None
-
None
Description
When there is a single variant of a given method name, and that method has a single parameter, then calls to that method with zero arguments will result in a call to the method with a value of null, even though the no argument is present in the actual method call. This is surprising and leads to silent errors. Instead, I would expect groovy to throw an error saying that no matching method could be found.
Example:
new A() class A { A(){ m() } void m(String param){ println "param: $param" } }
Running the code above yields:
param: null
But I would expect it to yield something like:
Caught: groovy.lang.MissingMethodException: No signature of method: A.m() is applicable for argument types: () values: [] Possible solutions: m(java.lang.String), is(java.lang.Object), dump(), any(), any(groovy.lang.Closure), use([Ljava.lang.Object;) groovy.lang.MissingMethodException: No signature of method: A.m() is applicable for argument types: () values: [] Possible solutions: m(java.lang.String), is(java.lang.Object), dump(), any(), any(groovy.lang.Closure), use([Ljava.lang.Object;) at A.<init>(testClass2.groovy:8) at testClass2.run(testClass2.groovy:3)