[ https://issues.apache.org/jira/browse/GROOVY-8069?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shil Sinha resolved GROOVY-8069. -------------------------------- Resolution: Fixed Fix Version/s: 2.4.9 > Annotation based logging of complex expression in closure throws > GroovyCastException when statically compiled > ------------------------------------------------------------------------------------------------------------- > > Key: GROOVY-8069 > URL: https://issues.apache.org/jira/browse/GROOVY-8069 > Project: Groovy > Issue Type: Bug > Components: Static compilation > Affects Versions: 2.4.8 > Reporter: Shil Sinha > Assignee: Shil Sinha > Fix For: 2.4.9 > > > Example: > {code} > @groovy.util.logging.Log > @groovy.transform.CompileStatic > class Foo { > void bar() { > def callable = { > log.info('a' + 1) > } > callable.call() > } > } > new Foo().bar() > {code} > The log statement in the code above results in the following runtime > exception: > {code} > org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast > object 'Foo@14ec4505' with class 'Foo' to class 'java.util.logging.Logger' > {code} > The case where the closure is in a static method is similar; the object being > cast to a Logger is a Class instead. > This appears to be due to the implicitThis field being set incorrectly on the > guard method call expression (log.isLoggable(Level) in the default case) > created in implementations of LoggingStrategy.wrapLoggingMethodCall. > > Prior to Groovy 2.4.8, log statements inside closures were not guarded > (https://issues.apache.org/jira/browse/GROOVY-6932), so this bug wasn't > visible. -- This message was sent by Atlassian JIRA (v6.3.15#6346)