You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Alexey Afanasiev (JIRA)" <ji...@apache.org> on 2017/09/07 16:15:01 UTC

[jira] [Created] (GROOVY-8310) Strange @CompileStatic check in Closure

Alexey Afanasiev created GROOVY-8310:
----------------------------------------

             Summary: Strange @CompileStatic check in Closure 
                 Key: GROOVY-8310
                 URL: https://issues.apache.org/jira/browse/GROOVY-8310
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation, Static Type Checker
            Reporter: Alexey Afanasiev


This code compiles normal:
{code}
@CompileStatic
class B {
    public <T> T bar(Closure<Collection<Integer>> a) {
        return null
    }

    def use() {
       bar {
            [1]
        }
    }
}
{code}

Switching return type cause error in code:
{code}
import groovy.transform.CompileStatic

@CompileStatic
class B {
    public def bar(Closure<Collection<Integer>> a) {
        return null
    }

    def use() {
        bar { // Error:(21, 9) Groovyc: [Static type checking] - Cannot find matching method pack.B#bar(groovy.lang.Closure <java.util.List>). 
            [1]
        }
    }
}
{code}

I believe first example should have error too.  But probably after fixing in that way following code will be broken:
{code}
def foo() {
        def nums = [1]
        def res = nums.collectMany { [it] }
    }
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)