[code-reflection] Integrated: 8373571: Code model of JavaOp.ForOp does not handle (un)boxing correctly
Maurizio Cimadamore
mcimadamore at openjdk.org
Tue Dec 16 10:02:42 UTC 2025
On Mon, 15 Dec 2025 11:31:45 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
> This PR addresses an issue in for-each loop model generation.
> The for each op factory takes three bodies:
> 1. the for each expression (e.g. either a collection, or an array)
> 2. the for each initializer (the logic that receives an element from the expression, and turns it into the expected variable type in the source code)
> 3. the for each body
>
> The translation for (2) seems to contain a bug: javac erroneously assumes that the initializer body has type `(V)->V`, where `V` is the type of the induction variable declared in the source code.
>
> This PR fixes that so that (2) has type `(ELEM)->V`, where `ELEM` is the static type of an element of the for-each expression, and `V` is the static type of the induction variable.
>
> This translation allows uboxing operations to appear manifest in the generated model.
This pull request has now been integrated.
Changeset: c3455b1d
Author: Maurizio Cimadamore <mcimadamore at openjdk.org>
URL: https://git.openjdk.org/babylon/commit/c3455b1d11f9d2b50739f702b42cf4c620569dc7
Stats: 193 lines in 3 files changed: 190 ins; 1 del; 2 mod
8373571: Code model of JavaOp.ForOp does not handle (un)boxing correctly
Reviewed-by: asotona, psandoz
-------------
PR: https://git.openjdk.org/babylon/pull/750
More information about the babylon-dev
mailing list