On Mon, 24 Apr 2023 21:05:57 GMT, Andy Goryachev <[email protected]> wrote:
>> John Hendrikx has updated the pull request incrementally with three
>> additional commits since the last revision:
>>
>> - Base BitSet on AbstractSet to inherit correct equals/hashCode/toArray
>>
>> - Removed faulty toArray implementations in PseudoClassState and
>> StyleClassSet
>> - Added test that verifies equals/hashCode for PseudoClassState respect
>> Set contract now
>> - Made getBits package private so it can't be inherited
>> - Remove unused code
>> - Ensure Match doesn't allow modification
>
> modules/javafx.graphics/src/main/java/com/sun/javafx/css/BitSet.java line 546:
>
>> 544: }
>> 545: if (obj instanceof BitSet<?> bitSet) { // fast path if other
>> is a BitSet
>> 546: return equalsBitSet(bitSet);
>
> I suspect this will not work
> BitSet<Integer> will never be equal to BitSet<String>, does it mean we have
> to do a per-element comparison?
> I suspect this will not work BitSet will never be equal to BitSet, does it
> mean we have to do a per-element comparison?
If I understand correctly, you're pointing out that if you have two bit sets,
of different element types (currently in use we have `BitSet<PseudoClassState>`
and `BitSet<StyleClass>`) but they have the same bit pattern and size, that
they could be considered equals.
This is a good point, and a problem that has been part of `BitSet` since its
inception.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1076#discussion_r1176027245