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

Eric Milles updated GROOVY-10234:
---------------------------------
    Fix Version/s: 3.0.10

> Groovyc throws Stackoverflow error on generic class with lower bound
> --------------------------------------------------------------------
>
>                 Key: GROOVY-10234
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10234
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static compilation
>    Affects Versions: 3.0.8
>            Reporter: Svatopluk Dedic
>            Assignee: Eric Milles
>            Priority: Major
>             Fix For: 4.0.0-beta-2, 3.0.10
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Groovy suffers *java.lang.StackOverflowError* when working with generics. I 
> encountered this one when running @CompileStatic visitor on 
> [https://github.com/micronaut-projects/micronaut-core/blob/3.0.x/http-server-netty/src/test/groovy/io/micronaut/http/server/netty/converters/ConverterRegistrySpec.groovy#L37]
>  
> I've isolated it down to two files:
> AC.java:
> {code:java}
> import java.util.Optional;
> @groovy.transform.CompileStatic
> public interface AC <Impl extends AC> {
>     <T> Optional<T> convert(Object object, Class<T> targetType);
> }
> {code}
> AA.groovy:
>  
> {code:java}
> @groovy.transform.CompileStatic
> class AA {
>     public <T> T getBean(Class<T> beanClass) {
>         return null;
>     }
>     void a() {
>         getBean(AC).convert(new ArrayList(), String).get();   
>     }  
> } 
> {code}
> When run as
>  
> {quote}*groovyc AC.java*
> {quote}
> *(*AC.class produced; using groovyc instead of javac as it auto includes 
> groovy.transform on classpath)
> {quote}{color:#172b4d}groovyc AA.groovy{color}
> {quote}
> the stacktrace is thrown / reported:
> {code:java}
> java.lang.StackOverflowError
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isUsingGenericsOrIsArrayUsingGenerics(StaticTypeCheckingSupport.java:1263)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1863)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1857)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1813)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1802)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1872)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1857)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1813)
>         at 
> org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext(StaticTypeCheckingSupport.java:1802)
> ...
> {code}
> Such patterns are IMHO easity to find in Spring or other IoCs as well.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to