You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2021/12/18 15:42:00 UTC

[jira] [Created] (GROOVY-10424) SC: stack overflow for optimized boolean on inner class with inner class(es)

Eric Milles created GROOVY-10424:
------------------------------------

             Summary: SC: stack overflow for optimized boolean on inner class with inner class(es)
                 Key: GROOVY-10424
                 URL: https://issues.apache.org/jira/browse/GROOVY-10424
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation
    Affects Versions: 4.0.0-rc-1
            Reporter: Eric Milles
            Assignee: Eric Milles


When using static compilation and checking a private inner class for groovy truth, a stack overflow is possible within {{BooleanExpressionTransformer#isExtended}}.

{code:groovy}
@groovy.transform.CompileStatic
class Outer {
  private static class Inner {
    private Inner() { // triggers creation of Inner$1 in StaticCompilationVisitor$addPrivateBridgeMethods
    }
  }
  void test() {
    def inner = new Inner()
    if (inner) { // optimized boolean expression; StackOverflowError
      print 'works'
    }
  }
}
new Outer().test()
{code}

{code:groovy}
@groovy.transform.CompileStatic
class Outer {
  private static class Inner {
    static class Three {}
  }
  void test() {
    def inner = new Inner()
    if (inner) { // optimized boolean expression; StackOverflowError
      print 'works'
    }
  }
}
new Outer().test()
{code}



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