[ 
https://issues.apache.org/jira/browse/GROOVY-7774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15401505#comment-15401505
 ] 

ASF GitHub Bot commented on GROOVY-7774:
----------------------------------------

Github user jwagenleitner commented on a diff in the pull request:

    https://github.com/apache/groovy/pull/376#discussion_r72922015
  
    --- Diff: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java ---
    @@ -5169,12 +5170,13 @@ public static Map groupBy(Object[] self, 
List<Closure> closures) {
          * @return a new Map grouped by keys
          * @since 1.0
          */
    -    public static <G, K, V> Map<G, Map<K, V>> groupBy(Map<K, V> self, 
@ClosureParams(MapEntryOrKeyValue.class) Closure<G> closure) {
    -        final Map<G, List<Map.Entry<K, V>>> initial = groupEntriesBy(self, 
closure);
    -        final Map<G, Map<K, V>> answer = new LinkedHashMap<G, Map<K, V>>();
    -        for (Map.Entry<G, List<Map.Entry<K, V>>> outer : 
initial.entrySet()) {
    +    public static <G, K, V> Map<G, Map<? extends  K, ? extends V>> groupBy(
    +            Map<K, V> self, @ClosureParams(MapEntryOrKeyValue.class) 
Closure<G> closure) {
    --- End diff --
    
    Nevermind my comments on wildcards on self param, the more I think about it 
that doesn't make sense.
    
    However, wont changing the return type to have wildcards extends mean that 
nothing can be put in the map that is mapped to the groupBy key which some may 
rely on being able to do?


> 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
>
> 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)

Reply via email to