[ https://issues.apache.org/jira/browse/GROOVY-7934?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17782901#comment-17782901 ]
Eric Milles commented on GROOVY-7934: ------------------------------------- This is not so much a problem with the type checker as it is with the definition of inject. The method is declared “<E, T, U extends T, V extends T> T inject(Collection<E> c, U initialValue, Closure<V> xform)”. So there is no relationship between the collection elements and the initial value or combiner function. > Type inference breaks for Collection.inject > ------------------------------------------- > > Key: GROOVY-7934 > URL: https://issues.apache.org/jira/browse/GROOVY-7934 > Project: Groovy > Issue Type: Bug > Affects Versions: 2.4.6 > Reporter: Oliver Holp > Priority: Minor > Labels: CompileStatic > > The code below should not compile as the first parameter to the inject method > must be a string, but the integer 0 is handed in: > {code:groovy} > @CompileStatic > public static void main(String[] args) { > def inList = ["a", "b", "c"] > def outList = inList.inject(0, { a, b -> a + "," + b }) > println(outList) > } > {code} > I opened this issue as adviced in the reply to the same issue I asked on > stackoverflow: > http://stackoverflow.com/questions/39444838/chance-for-this-hole-in-groovy-staic-typing-to-be-fixed/39446458#39446458 -- This message was sent by Atlassian Jira (v8.20.10#820010)