On Sat, 1 Apr 2023 08:00:33 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

>> Michael Strauß has updated the pull request with a new target base due to a 
>> merge or a rebase. The pull request now contains five commits:
>> 
>>  - Merge branch 'master' into fixes/JDK-8283063
>>    
>>    # Conflicts:
>>    # 
>> modules/javafx.base/src/main/java/com/sun/javafx/collections/ObservableListWrapper.java
>>    # 
>> modules/javafx.base/src/main/java/com/sun/javafx/collections/ObservableMapWrapper.java
>>    # 
>> modules/javafx.base/src/main/java/com/sun/javafx/collections/ObservableSequentialListWrapper.java
>>    # 
>> modules/javafx.base/src/main/java/com/sun/javafx/collections/ObservableSetWrapper.java
>>  - address review comments
>>  - refactored removeAll/retainAll optimizations
>>  - Optimize removeAll/retainAll for Observable{List/Set/Map}Wrapper
>>  - Failing test
>
> modules/javafx.base/src/main/java/javafx/collections/ModifiableObservableListBase.java
>  line 142:
> 
>> 140: 
>> 141:             return;
>> 142:         }
> 
> I'm really happy you also added the index range checks, not only does it 
> conform to the contract better, it will help expose bugs in caller code (or 
> even the JavaFX code as Observable* classes are used in many places, and who 
> knows what bugs might lurk in some of the more complicated classes).
> 
> I'm not quite sure how this check is suppose to work though; does this need a 
> comment ?
> Suggestion:
> 
>         if (fromIndex == toIndex) {  // distinguish between the clear and 
> remove(int) call
>             if (fromIndex < 0 || fromIndex > size()) {
>                 throw new IndexOutOfBoundsException("Index: " + fromIndex);
>             }
> 
>             return;
>         }
> 
> 
> I think that would be a bit too cryptic for me...

The index check is only really necessary for the optimized code path, since 
calling `listIterator` later in the method would catch an invalid index. 
However, I've opted to always check the index at the beginning of the method.

> modules/javafx.base/src/test/java/test/com/sun/javafx/collections/ObservableSequentialListWrapperTest.java
>  line 60:
> 
>> 58: 
>> 59:     @Test
>> 60:     public void 
>> testAddAllWithEmptyCollectionArgumentAndInvalidIndexThrowsIOOBE() {
> 
> How about a variant that doesn't pass an empty collection, `-1` should still 
> fail, and for example `100` should also fail.

Done.

> modules/javafx.base/src/test/java/test/javafx/collections/ModifiableObservableListBaseTest.java
>  line 61:
> 
>> 59: 
>> 60:     @Test
>> 61:     public void 
>> testAddAllWithEmptyCollectionArgumentAndInvalidIndexThrowsIOOBE() {
> 
> Could use variant here I think with a non empty collection, and see if it 
> still throws IOOBE.

Done.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/751#discussion_r1155152703
PR Review Comment: https://git.openjdk.org/jfx/pull/751#discussion_r1155153010
PR Review Comment: https://git.openjdk.org/jfx/pull/751#discussion_r1155152937

Reply via email to