[ https://issues.apache.org/jira/browse/GROOVY-7843?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Arnaud CAVAILHEZ updated GROOVY-7843: ------------------------------------- Description: 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} was: A trait extending another and calling itself more than 3 times: ```@CompileStatic trait UpperTrait { void call(Closure body){ body() } }``` ```@CompileStatic trait LowerTrait extends UpperTrait { void threeCalls() { call { call { call { } } } } }``` Will generate a `ClassCastException` when called: ```class ImplementsTrait implements LowerTrait { } new ImplementsTrait().threeCalls() ``` raises: ```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..``` > 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 > 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 (v6.3.4#6332)