[
https://issues.apache.org/jira/browse/GROOVY-11127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17748991#comment-17748991
]
ASF GitHub Bot commented on GROOVY-11127:
-----------------------------------------
paulk-asert commented on PR #1915:
URL: https://github.com/apache/groovy/pull/1915#issuecomment-1657355755
@merscwog There is an open issue for `minus` that overlaps with that
scenario (see GROOVY-10964). Our users have been particularly desiring of an
efficient minus which also caters for NumberAwareComparator. There is a PR (see
https://github.com/apache/groovy/pull/1875) also for that but I haven't
progressed that since the initial PR also is affected by the AbstractSet "bug".
It looks like the JDK will fix that soon (see
https://bugs.openjdk.org/browse/JDK-6394757). I was planning on updating the PR
to try to align our behavior with how it will end up if possible.
So, feel free to give that a crack if you want (i.e. incorporate
GROOVY-10964), or ignore it altogether and skip test cases that are affected or
add in a comment that the test case might change if GROOVY-10964 is resolved.
> Add '|', '&', and '^' operators to Set and SortedSet
> ----------------------------------------------------
>
> Key: GROOVY-11127
> URL: https://issues.apache.org/jira/browse/GROOVY-11127
> Project: Groovy
> Issue Type: New Feature
> Components: groovy-jdk
> Reporter: Spencer Allain
> Assignee: Paul King
> Priority: Trivial
> Fix For: 5.x
>
>
> Many languages conventionally allow sets to use '|' as union, '&' as
> intersection, and '^' as symmetric difference operations on sets.
> This ticket is proposing adding these operations as DefaultGroovyMethods for
> Set and SortedSet such that the below tests should pass:
> {code:java}
> Set a = [1,2,3,4] as Set
> Set b = [3,4,5,6] as Set
> assert (a | b) == [1,2,3,4,5,6] as Set
> assert (a & b) == [3,4] as Set
> assert (a ^ b) == [1,2,5,6] as Set
> Set d = ['a', 'B', 'c'] as Set
> Set e = ['A', 'b', 'D'] as Set
> assert d.and(e, String.CASE_INSENSITIVE_ORDER) == ['a', 'B'] as Set
> assert d.and(e, Comparator.naturalOrder()) == [] as Set
> assert d.xor(e, String.CASE_INSENSITIVE_ORDER) == ['c', 'D'] as Set
> assert d.xor(e, Comparator.naturalOrder()) == ['a', 'B', 'c', 'A', 'b', 'D']
> as Set
> {code}
> A [Pull Request|https://github.com/apache/groovy/pull/1915] exists that
> implements the desired additions for the 5.x groovy branch (master), but it
> should be fairly easy to make the functionality available in 4.x if desired.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)