You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Christopher Smith (Jira)" <ji...@apache.org> on 2020/11/19 06:15:00 UTC

[jira] [Created] (GROOVY-9822) StackOverflowError in STC

Christopher Smith created GROOVY-9822:
-----------------------------------------

             Summary: StackOverflowError in STC
                 Key: GROOVY-9822
                 URL: https://issues.apache.org/jira/browse/GROOVY-9822
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation
    Affects Versions: 3.0.6
            Reporter: Christopher Smith


This appears similar to GROOVY-9565, but it's happening in a context that is generics-free as far as I can tell. I have the following pair of files, where the graph-related types are from TinkerPop:

{code:groovy}
@CompileStaticinterface GremlinAccess {
    GraphTraversalSource readOnly()

    GremlinSession session()

    interface GremlinSession extends AutoCloseable {
        GraphTraversalSource traversal()
    }
}
{code}

{code:groovy}
@TupleConstructor(defaults = false)
@CompileStatic
class GraphObjectGremlinAccess implements GremlinAccess {
    final Graph graph

    @Override
    GraphTraversalSource readOnly() {
        graph.traversal().withStrategies(ReadOnlyStrategy.instance())
    }

    @Override
    GremlinSession session() {
        new PlaceboGremlinSession()
    }


    private class PlaceboGremlinSession implements GremlinSession {
        @Override
        void close() {}

        @Override
        GraphTraversalSource traversal() {
            graph.traversal()
        }
    }
}
{code}

The first file compiles without problem. The second file triggers a stack overflow, looping the four lines from 1870 to 1882:

{code}
Caused by: java.lang.StackOverflowError    at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.isUsingGenerics (DecompiledClassNode.java:86)    at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext (StaticTypeCheckingSupport.java:1880)    at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext (StaticTypeCheckingSupport.java:1870)    at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext (StaticTypeCheckingSupport.java:1827)    at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext (StaticTypeCheckingSupport.java:1816)    at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext (StaticTypeCheckingSupport.java:1882)
{code}

I'm attempting to trim down the example.



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