On Tue, 21 Dec 2021 12:13:55 GMT, Abhinay Agarwal <[email protected]> wrote:
>> modules/javafx.controls/src/main/java/javafx/scene/control/MultipleSelectionModelBase.java
>> line 877:
>>
>>> 875: if (size >= 0) {
>>> 876: return size;
>>> 877: }
>>
>> Using lazy evaluation means that you need to be extra careful that the size
>> is invalidated in all the right places. One method that needs to be checked
>> is the `set(int index, int... indices)` method. How carefully have you
>> checked to make sure that nothing that could change the size fails to update
>> the `size` field?
>>
>> Related to this, are you satisfied that the current set of unit tests are
>> sufficient to catch any potential problems, and that you don't need to add
>> more tests?
>
> Good point. All the test cases that I could think of were already present in
> `MultipleSelectionModelImplTest`. Nevertheless, test cases for different
> `set()` methods can definitely be added. I will work on it.
What about the first part of my question? Have you looked at the set logic to
ensure that `size` is being invalidated in all places it should be. The
`set(int index, int... indices)` method does not directly invalidate `size`. If
that method unconditionally set `size = -1`, it would be easier to prove that
there are no missed cases.
-------------
PR: https://git.openjdk.java.net/jfx/pull/673