[ https://issues.apache.org/jira/browse/GROOVY-7996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Milles reopened GROOVY-7996: --------------------------------- Assignee: (was: Paul King) Rolling back initial changes for this issue. There were a number of other issues created by this and I think the case of a delegate having the same property name as an owner field is a bit less likely of a use case than the others. A number of test cases have been added so if a fix is approached for this again, there will be less chance of breaking other closure variable expression access scenarios. > Using with method with a closure that references a protected property > produces ClassCastException > ------------------------------------------------------------------------------------------------- > > Key: GROOVY-7996 > URL: https://issues.apache.org/jira/browse/GROOVY-7996 > Project: Groovy > Issue Type: Bug > Affects Versions: 2.4.7 > Reporter: Graeme Rocher > Priority: Major > Fix For: 2.5.6, 3.0.0-beta-1 > > Time Spent: 0.5h > Remaining Estimate: 0h > > The following example: > {code} > class Foo { > Object propertyMissing(String name) { > return "stuff" > } > > void build(Closure callable) { > this.with(callable) > } > } > @groovy.transform.CompileStatic > class Bar { > protected List bar = [] > > boolean doStuff() { > Foo foo = new Foo() > foo.build { > return bar.isEmpty() > } > } > } > new Bar().doStuff() > {code} > Produces > {code} > java.lang.ClassCastException: java.lang.String cannot be cast to > java.util.List > at Bar$_doStuff_closure1.doCall(ConsoleScript3:19) > at Bar$_doStuff_closure1.call(ConsoleScript3) > at > org.codehaus.groovy.runtime.DefaultGroovyMethods.with(DefaultGroovyMethods.java:242) > at Bar.doStuff(ConsoleScript3:18) > at Ba > {code} > The equivalent code without CompileStatic prints: > {code} > Result: false > {code} > The behaviour of both should be he same IMO -- This message was sent by Atlassian Jira (v8.3.4#803005)