[ 
https://issues.apache.org/jira/browse/GROOVY-7363?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pascal Schumacher resolved GROOVY-7363.
---------------------------------------
       Resolution: Fixed
         Assignee: Pascal Schumacher  (was: Cédric Champeau)
    Fix Version/s: 2.4.6

Pull request merged. Thanks!

> Frequent compilation error on cascading generic types
> -----------------------------------------------------
>
>                 Key: GROOVY-7363
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7363
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>    Affects Versions: 2.4.2
>         Environment: MacOS X
> Oracle JDK 1.7u75 / 1.8u40
> Maven 3.0.5
>            Reporter: Frank Pavageau
>            Assignee: Pascal Schumacher
>              Labels: test
>             Fix For: 2.4.6
>
>         Attachments: lost-cascading-types.tar.gz
>
>
> Most of the time, I get the following compilation error:
> {noformat}
> [ERROR] 
> /Users/fpavageau/devs/bugs/lost-cascading-types/src/main/groovy/BadType.groovy:
>  22: [Static type checking] - No such property: start for class: T
> [ERROR] @ line 22, column 22.
> [ERROR] println("" + rel.currentState.state.start)
> [ERROR] ^
> [ERROR] 
> [ERROR] 1 error
> {noformat}
> where {{rel}} is an instance of a non-parameterized (Java) class implementing 
> a generic interface with the {{currentState}} generic property. So the type 
> of the property should actually be known, but it's lost and I get a 
> compilation error because the {{start}} property is not part of the 
> lower-bound type of {{currentState}}.
> When I say "most of the time", it's because the compilation error is not 
> always triggered (so lots of debugging fun!). I've tried with Oracle JDK 
> 1.7u75 and 1.8u40, and I get around 87% of failures:
> {code:title=JDK 1.7}
> $ failures=0; for i in {1..100}; do mvn clean package > /dev/null 2>&1 || 
> ((failures++)); done; echo $failures
> 87
> {code}
> {code:title=JDK 1.8}
> $ failures=0; for i in {1..100}; do mvn clean package > /dev/null 2>&1 || 
> ((failures++)); done; echo $failures
> 88
> {code}
> I'm attaching a test case, which is also available on 
> [Github|https://github.com/fpavageau/lost-cascading-types].



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

Reply via email to