[ https://issues.apache.org/jira/browse/GROOVY-7996?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17173632#comment-17173632 ]
Paul King commented on GROOVY-7996: ----------------------------------- I know this was a while ago, but in hindsight, I probably would have placed the methodMissing/get/set part of the fix into its own type checker extension, perhaps {{MopAwareChecker}}. That part of the current "fix" doesn't work for instance outside closures, e.g.: {code:java} @groovy.transform.CompileStatic class Foo { int a = 40 def main() { a + (int)b } def propertyMissing(String name) { 2 } } def foo = new Foo() assert foo.main() == 42 {code} Nor for method calls. > 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.9, 3.0.0-rc-2 > > Time Spent: 2h 10m > 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)