On Sun, 10 Aug 2025 01:11:43 GMT, Chen Liang <[email protected]> wrote:
> ConstantBootstraps.explicitCast behaves like a snippet of code in its
> specification. However, in the rest of the nominal spec, it incorrectly
> assumes a null `value` and a primitive `dstType` results in a
> ClassCastException instead of the zero value of that primitive type. This is
> inconsistent with that snippet and the actual code behavior.
>
> The specification is fixed, the test for `explicitCast` is merged into the
> main `ConstantBootstraps` test, and a new unit test case for `value = null`
> and `dstType = char.class` is added, verifying the outcome is `'u0000'`.
src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java line 382:
> 380: * or {@code false} depending on whether the
> least-significant-bit
> 381: * is 1 or 0 respectively. If {@code value} is null, the zero
> value for
> 382: * the {@code dstType} is returned. Otherwise, a {@link
> ClassCastException}
Is 'zero value' a well-defined term?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26714#discussion_r2298693941