[ https://issues.apache.org/jira/browse/GROOVY-7843?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17173702#comment-17173702 ]
Eric Milles commented on GROOVY-7843: ------------------------------------- Fixed by GROOVY-9386 > Trait method calling closure cannot be inherited while using CompileStatic > -------------------------------------------------------------------------- > > Key: GROOVY-7843 > URL: https://issues.apache.org/jira/browse/GROOVY-7843 > Project: Groovy > Issue Type: Bug > Reporter: Arnaud CAVAILHEZ > Assignee: Eric Milles > Priority: Minor > > A trait extending another and calling itself more than 3 times: > {code}@CompileStatic > trait UpperTrait { > void call(Closure body){ > body() > } > }{code} > {code}@CompileStatic > trait LowerTrait extends UpperTrait { > void threeCalls() { > call { > call { > call { > } > } > } > } > }{code} > Will generate a `ClassCastException` when called: > {code}class ImplementsTrait implements LowerTrait { > } > new ImplementsTrait().threeCalls() > {code} > raises: > {code}Caught: java.lang.ClassCastException: > LowerTrait$Trait$Helper$_threeCalls_closure1 cannot be cast to UpperTrait > java.lang.ClassCastException: LowerTrait$Trait$Helper$_threeCalls_closure1 > cannot be cast to UpperTrait > at > LowerTrait$Trait$Helper$_threeCalls_closure1$_closure2.doCall(LowerTrait.groovy:9) > etc..{code} -- This message was sent by Atlassian Jira (v8.3.4#803005)