On Jun 15, 2015, at 6:34 PM, Martin Buchholz <marti...@google.com> wrote:
> Staring at LinkedTransferQueue.java, I see:
> 
>                     return Spliterators.spliterator
>                         (a, 0, i, (Spliterator.ORDERED |
>                                    Spliterator.NONNULL |
>                                    Spliterator.CONCURRENT));
> 
> but ... that's a spliterator over an immutable array, so shouldn't we have 
> IMMUTABLE instead of CONCURRENT?
> 

The intent here is that the sub-spliterators "inherit" certain characteristics 
of their top-level spliterator or source, rather than from that which might be 
derived from an internal data structure used to hold a partitioned set of 
elements.

Note that the specification of Spliterator.CONCURRENT allows for 
sub-spliterators to report SIZED/SUBSIZED.

Paul.

> Looking further, I see ArraySpliterator requires its input array to be 
> unmodified during operation
> 
>          * @param array the array, assumed to be unmodified during use
> 
> ("assumed" is weird in javadoc.  maybe "required"?)
> 
> but ArraySpliterator does not include IMMUTABLE in characteristics, even 
> though Arrays.spliterator does.
> 
> I suggest fixing all these array spliterator characteristics to always report 
> IMMUTABLE and never report CONCURRENT, and to document this fact, as we 
> already do with SIZED and SUBSIZED.

Reply via email to