Stefanos Chaliasos created GROOVY-10327:
-------------------------------------------

             Summary: Compiler crash when combining closure with function 
reference
                 Key: GROOVY-10327
                 URL: https://issues.apache.org/jira/browse/GROOVY-10327
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation, Static Type Checker
    Affects Versions: 4.0.0-beta-1
            Reporter: Stefanos Chaliasos


I have the following Groovy program.
{code:groovy}
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; }
}
{code}
h2. Actual Behavior

The compiler crashes with the following stacktrace.
{code:java}
>>> 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)
{code}

h2. Expected Behavior

Compile successfully.
h2. Comment

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



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

Reply via email to