Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-10327

Compiler crash when combining closure with function reference

    XMLWordPrintableJSON

Details

    Description

      I have the following Groovy program.

      import java.util.function.Function;
      
      @groovy.transform.TypeChecked
      class A<X, Y> {
        void a() {
          Closure<Integer> x = { Function<Integer, Integer> x -> 1};
          B b = new B();
          x(b::b);
        }
      }
      
      class B {
        Integer b(Integer x) { return null; }
      }
      

      Actual Behavior

      The compiler crashes with the following stacktrace.

      >>> a serious error occurred: null
      >>> stacktrace:
      java.lang.StackOverflowError
      	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
      	at java.base/java.util.LinkedList$LLSpliterator.tryAdvance(LinkedList.java:1253)
      	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
      	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
      	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
      	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.base/java.util.stream.ReferencePipeline.noneMatch(ReferencePipeline.java:538)
      	at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.inferMethodReferenceType(StaticTypeCheckingVisitor.java:3681)
      	at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallArguments(StaticTypeCheckingVisitor.java:2794)
      	at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.inferMethodReferenceType(StaticTypeCheckingVisitor.java:3708)
      	at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallArguments(StaticTypeCheckingVisitor.java:2794)
      

      Expected Behavior

      Compile successfully.

      Comment

      Tested against 4-beta-1, and master (commit: 868dabf9fadbddd13c7e8859556e4ed2796f7e1b).

      Attachments

        Issue Links

          Activity

            People

              emilles Eric Milles
              schaliasos Stefanos Chaliasos
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: