[jira] [Updated] (GROOVY-7843) Trait method calling closure cannot be inherited while using CompileStatic

2016-05-22 Thread Arnaud CAVAILHEZ (JIRA)

 [ 
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)


[jira] [Created] (GROOVY-7843) Trait method calling closure cannot be inherited while using CompileStatic

2016-05-22 Thread Arnaud CAVAILHEZ (JIRA)
Arnaud CAVAILHEZ created GROOVY-7843:


 Summary: 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:

```@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..```








--
This message was sent by Atlassian JIRA
(v6.3.4#6332)