Integrated: Add alternate desugaring strategy for null-restricted arrays

Maurizio Cimadamore mcimadamore at openjdk.org
Fri Jan 9 17:19:05 UTC 2026


On Fri, 9 Jan 2026 16:11:11 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> 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.

This pull request has now been integrated.

Changeset: eff0f5d4
Author:    Maurizio Cimadamore <mcimadamore at openjdk.org>
URL:       https://git.openjdk.org/valhalla/commit/eff0f5d456b86d34155b375846444eacacdbe180
Stats:     649 lines in 11 files changed: 197 ins; 385 del; 67 mod

Add alternate desugaring strategy for null-restricted arrays

Reviewed-by: vromero

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

PR: https://git.openjdk.org/valhalla/pull/1877


More information about the valhalla-dev mailing list