[
https://issues.apache.org/jira/browse/GROOVY-9710?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sam Gleske closed GROOVY-9710.
------------------------------
Resolution: Not A Bug
* Groovy 2.5 release notes call out the changed behavior.
* A nice to have would be [List.intersect API
documentation|http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/List.html#intersect(java.lang.Iterable)]
calling out the behavior for how it is ordered; or mentioning that ordering is
not guaranteed and to use another method if guaranteed ordering is a concern.
> List.intersect changes behavior from Groovy 2.4 and Groovy 2.5+
> ---------------------------------------------------------------
>
> Key: GROOVY-9710
> URL: https://issues.apache.org/jira/browse/GROOVY-9710
> Project: Groovy
> Issue Type: Bug
> Components: groovy-runtime
> Affects Versions: 3.0.5, 2.5.13
> Environment: Ubuntu 18.04.5 LTS
> OpenJDK Java 1.8.0_265 (Private Build 25.265-b01)
> Gradle 5.6.3
> Reporter: Sam Gleske
> Priority: Major
>
> h2. Description
> [List.intersect|http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/List.html#intersect(java.lang.Iterable)]
> preserves the ordering of the source list in Groovy 2.4 but instead takes
> the ordering of the intersecting list. This can lead to unexpected behavior
> in Groovy applications as code migrates to newer versions of Groovy.
> h2. Example code
> {code:java}
> // Passes assertion in Groovy 2.4.20 but fails in Groovy 2.5.13 and 3.0.5
> assert ['a', 'b'].intersect(['c', 'b', 'a']) == ['a', 'b']{code}
> h2. Expected behavior
> The order of the first list is preserved.
> h2. Actual behavior
> The order of the second list takes precedence.
> h2. Groovy version matrix
> ||Groovy version||Behavior||
> |2.4.20|Assertion passes|
> |2.5.13|Assertion fails (order reversed) |
> |3.0.5|Assertion fails (order reversed) |
--
This message was sent by Atlassian Jira
(v8.3.4#803005)