Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.0.8
Description
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:
import java.util.Optional; @groovy.transform.CompileStatic public interface AC <Impl extends AC> { <T> Optional<T> convert(Object object, Class<T> targetType); }
AA.groovy:
@groovy.transform.CompileStatic class AA { public <T> T getBean(Class<T> beanClass) { return null; } void a() { getBean(AC).convert(new ArrayList(), String).get(); } }
When run as
groovyc AC.java
*(*AC.class produced; using groovyc instead of javac as it auto includes groovy.transform on classpath)
groovyc AA.groovy
the stacktrace is thrown / reported:
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) ...
Such patterns are IMHO easity to find in Spring or other IoCs as well.
Attachments
Issue Links
- is related to
-
NETBEANS-5992 Using groovy compiler for parsing, code completion and navigation in NetBeans IDE
- Open
- relates to
-
GROOVY-10619 STC: fix support for unbounded wildcard references to self-bounded type parameters
- Closed