Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.4.3
-
None
Description
When statically importing a field and immediately calling a call() method on it, the static compiler gets confused and looks for a static method with the name of the field that takes the arguments passed to the call() method.
See below - comment out @CompileStatic and it will run as expected.
import groovy.transform.CompileStatic class WithCall { static final WithCall staticallyImported = new WithCall() String call(String input) { return input; } } class CompileStaticImport { @CompileStatic public static void main(String[] args) { assert WithCall.staticallyImported("to print") == "to print" } }
Error:(16, 16) Groovyc: [Static type checking] - Cannot find matching method WithCall#staticallyImported(java.lang.String). Please check if the declared type is right and if the method exists.
Attachments
Issue Links
- is related to
-
GROOVY-8389 Static import of a property messes with instance method
- Closed
- relates to
-
GROOVY-11056 modified behavior of variable resolution within Closure
- Closed