[ https://issues.apache.org/jira/browse/GROOVY-7774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15403569#comment-15403569 ]
ASF GitHub Bot commented on GROOVY-7774: ---------------------------------------- Github user blackdrag commented on a diff in the pull request: https://github.com/apache/groovy/pull/376#discussion_r73109779 --- Diff: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java --- @@ -5176,7 +5176,9 @@ public static Map groupBy(Object[] self, List<Closure> closures) { G key = outer.getKey(); List<Map.Entry<K, V>> entries = outer.getValue(); Map<K, V> target = createSimilarMap(self); - putAll(target, entries); --- End diff -- my suggestion would be to change putAll to `public static <K, V> Map<K, V> putAll(Map<K, V> self, Collection<? extends Map.Entry<? extends K, ? extends V>> entries) ` which more or less adds `? extends` before the Map.Entry part and to change back to use the putAll instead of the loop > Collection addAll fails CompileStatic type checking when adding a collection > of subtypes > ---------------------------------------------------------------------------------------- > > Key: GROOVY-7774 > URL: https://issues.apache.org/jira/browse/GROOVY-7774 > Project: Groovy > Issue Type: Bug > Components: groovy-jdk > Affects Versions: 2.4.3 > Environment: Windows, Java 8. > Reporter: Darren Hurt > Assignee: Paul King > Fix For: 2.4.8 > > > Suppose X is an interface and Y an interface such that Y extends X > The following code throws a compilation error (the outer class is annotated > as @CompileStatic). > {code} > Set<X> set = new HashSet<X>() > Set<Y> toAdd = ...... > set.addAll(toAdd) > {code} > However, the following works, which to me is inconsistent: > {code} > Set<X> set = new HashSet<X>() > Set<Y> toAdd = ...... > for(Y y in toAdd) { > set.add(y) > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)