On Fri, 9 Jan 2026 16:11:11 GMT, Maurizio Cimadamore <[email protected]>
wrote:
> Creation of null-restricted arrays are desugared as calls into methods of the
> `ArrayCreation` class, as we need to set the "strict" marker on the created
> array.
> Currently the JVM doesn't support creation of null-restricted array for
> non-value types, so in this PR I cleaned up the `ArrayCreation` API to
> reflect more what javac needs. Also, according to our long term plans,
> `ArrayCreation` is really implemented on top of a new primitive in `Array`,
> which will be refined later to support creation of arrays with desired flags.
>
> The translation strategy in javac is simple -- given an array initializer `{
> .. }`, we just assign the initializer to a temp variable, then wrap the
> initializer using a call to `ArrayCreation::copied` to obtain the new array.
> Then we wrap everything in a let expression, so that things compose nicely.
>
> While writing the test I realized that our combo framework failed to report
> compilation and execution failures. As I fixed that issue, I realized that a
> test I've added (`NullRestrictionReflectiveTest`) was not working correctly,
> as it had compilaton issues with some of the combinations and even a latent
> issue in signature parsing which I have now fixed.
src/java.base/share/classes/sun/reflect/generics/parser/SignatureParser.java
line 600:
> 598: case 'Z':
> 599: case 'L':
> 600: case '!':
This fix is unrelated to this PR, but necessary to fix
`NullRestrictionReflectiveTest`
-------------
PR Review Comment:
https://git.openjdk.org/valhalla/pull/1877#discussion_r2676772006