RFR: 8300543 Compiler Implementation for Pattern Matching for switch [v2]

Vicente Romero vromero at openjdk.org
Tue Apr 18 20:27:47 UTC 2023

On Tue, 18 Apr 2023 09:13:01 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:

>> This is the first draft of a patch for JEP 440 and JEP 441. Changes included:
>>  - the pattern matching for switch and record patterns features are made final, together with updates to tests.
>>  - parenthesized patterns are removed.
>>  - qualified enum constants are supported for case labels.
>> This change herein also includes removal record patterns in for each loop, which may be split into a separate PR in the future.
> Jan Lahoda has updated the pull request incrementally with six additional commits since the last revision:
>  - Fixing infinite loop where a binding pattern is replaced with a binding pattern for the same type.
>  - Reflecting review comments.
>  - Fixing exhaustiveness for unsealed supertype pattern.
>  - No need to enable features after error reported.
>  - SwitchBootstraps.typeSwitch should not initialize enum classes.
>  - A prototype of avoiding enum initialization.

src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 94:

> 92:      *   <li>the element is of type {@code String} or {@code Integer} and
> 93:      *       equals to the target.</li>
> 94:      *   <li>the element is of type {@code EnumDesc}, that describes a constant that is

I think that at ~line 76, up in this same javadoc you need to add a reference to EnumDesc in the general description. Where it says:

The static arguments are an array of case labels which must be non-null and of type
{@code String} or {@code Integer} or {@code Class}.


PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1170531849

More information about the compiler-dev mailing list