Eric Milles created GROOVY-11486:
------------------------------------

             Summary: DGM flatten return type is often incorrect
                 Key: GROOVY-11486
                 URL: https://issues.apache.org/jira/browse/GROOVY-11486
             Project: Groovy
          Issue Type: Bug
            Reporter: Eric Milles


The groovy method flatten for {{Object[]}}, {{Collection}}, {{Iterable}}, 
{{List}}, {{Set}} and {{SortedSet}} does not inference to the correct return 
type except for the case where there were no aggregate elements to flatten.

There isn't anything the type checker can do to detect the return type for 
non-trivial cases, but the {{flatten}} methods that accept a transform are a 
reasonable model:
{code:java}
    public static <T, E> Collection<T> flatten(Iterable<E> self, Closure<?> 
flattenUsing) {
        // ...
    }
{code}

This allows the programmer to declare the expected list type:
{code:groovy}
def list1 = [1,[2],[[3],[4]]]
List<Integer> list2 = list1.flatten(Closure.IDENTITY)
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to