groovy

[ [a:1, b:2, c:3] ].flatten() -> [ 1, 2, 3 ]

Details

  • Type: Test Test
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.6-beta-1
  • Fix Version/s: 1.5.7
  • Component/s: groovy-jdk
  • Labels:
    None
  • Environment:
    Originally Run on OS-X
  • Testcase included:
    yes
  • Patch Submitted:
    Yes
  • Number of attachments :
    2

Description

The JavaDoc of flatten says: "This collection and any nested collections have their contents (recursively) added to the new collection." However, if it encounters a map, it exacts the value list and flattens that. This is odd on two points – 1) a Map is not a Collection, so it shouldn't be touched by #flatten according to that definition, and 2) there is no map#flatten which corresponds to this behavior.

This makes it sound like a bug to me, but there may be existing code dependent on the issue. So the attached patches just document and demonstrate the issue.

Issue Links

Activity

Hide
Paul King added a comment -

My inclination is that the Map behavior isn't widely used and was provided as a feature without any real requirement but if we think someone is relyign on this behavior then I guess we should leave it and document it.

Show
Paul King added a comment - My inclination is that the Map behavior isn't widely used and was provided as a feature without any real requirement but if we think someone is relyign on this behavior then I guess we should leave it and document it.
Hide
Paul King added a comment -

JavaDoc updated and Closure version added to allow non-flattening behavior for Maps if desired.

Show
Paul King added a comment - JavaDoc updated and Closure version added to allow non-flattening behavior for Maps if desired.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: