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 2023/11/04 16:20:00 UTC
[jira] [Commented] (GROOVY-7934) Type inference breaks for Collection.inject
[ 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)