On Fri, 28 Oct 2022 19:12:02 GMT, Rémi Forax <fo...@openjdk.org> wrote:

>> Jim Laskey has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Update TemplateRuntime::combine
>
> src/java.base/share/classes/java/lang/template/StringTemplate.java line 307:
> 
>> 305:             Objects.requireNonNull(fragment, "fragments elements must 
>> be non-null");
>> 306:         }
>> 307:         fragments = Collections.unmodifiableList(new 
>> ArrayList<>(fragments));
> 
> I think using `List.copyOf()` is more efficient that 
> `Collections.unmodifiableList(new ArrayList<>(...))` because there is no copy 
> if the list is already created with List.of().
> 
> Edit:
> fragments should use List.copyOf() but i suppose that a value inside values 
> can be null, so you can not use List.copyOf() for the values.
> 
> There a little secret, the ImmutableList  has a special flag to represent an 
> unmodifiable list that can access null, this implementation is used by 
> `stream.toList()`, i think you should use a shared secret access to have have 
> access to this implementation instead of relying on 
> `Collections.unmodifiableList(new ArrayList<>(...))`.
> 
> @stuart-marks, do you think it's a good idea to use the null allowed 
> ImmutableList here ?

Changing as recommended

> src/java.base/share/classes/java/lang/template/StringTemplate.java line 354:
> 
>> 352:      * @implNote The result of interpolation is not interned.
>> 353:      */
>> 354:     public static final StringProcessor STR = st -> st.interpolate();
> 
> Should be `StringTemplate::interpolate`.

Yep

> src/java.base/share/classes/java/lang/template/TemplateProcessor.java line 38:
> 
>> 36:  * that do not throw checked exceptions. For example:
>> 37:  * {@snippet :
>> 38:  * TemplateProcessor<String> processor = st -> {
> 
> This is a good example of why having both way to describe a template 
> processor of string, TemplateProcessor<String and `StringPorcessor` is a bad 
> idea.

Noted

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

PR: https://git.openjdk.org/jdk/pull/10889

Reply via email to