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

Eric Milles reassigned GROOVY-9555:
-----------------------------------

    Assignee: Eric Milles

> Generic return type with raw upper bound is not inferred from argument 
> properly
> -------------------------------------------------------------------------------
>
>                 Key: GROOVY-9555
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9555
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>    Affects Versions: 2.5.11
>            Reporter: Daniil Ovchinnikov
>            Assignee: Eric Milles
>            Priority: Critical
>
> {code:title=classes.java}
> interface I<T> {}
> class C implements I<Object> {}
> interface Container {
>     <T extends I> T getInstance(Class<T> c);
> }
> {code}
> {code:title=playground.groovy}
> @groovy.transform.CompileStatic
> def usage(Container pc) {
>     C instance = pc.getInstance(C)
>     println(instance)
> }
> {code}
> {noformat}
> $ groovy -version
> Groovy Version: 2.5.11 JVM: 1.8.0_231 Vendor: Oracle Corporation OS: Mac OS X
> $ javac classes.java
> $ groovyc playground.groovy
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup 
> failed:
> playground.groovy: 3: [Static type checking] - Cannot assign value of type I 
> <T extends java.lang.Object> to variable of type C
>  @ line 3, column 18.
>        C instance = pc.getInstance(C)
>                     ^
> 1 error
> {noformat}
> PS real life use case:
> - {{I}} is {{org.gradle.api.Plugin}}
> - {{C}} is {{org.gradle.plugins.ear.EarPlugin}}
> - {{Container#getInstance}} is 
> {{org.gradle.api.plugins.PluginContainer#findPlugin}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to