RFR: 8318144: Match on enum constants with body compiles but fails with MatchException [v2]

Vicente Romero vromero at openjdk.org
Mon Nov 6 19:04:29 UTC 2023


On Mon, 6 Nov 2023 18:51:59 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 397:
>> 
>>> 395: 
>>> 396:             try {
>>> 397:                 if (!(value instanceof Enum<?> enumValue)) {
>> 
>> this code seems to be here with the only purpose of casting `value` to `Enum<?>`, if this is the case shouldn't this intention be more explicit?
>
> This method is also used in the `typeSwitch` (i.e. ordinary pattern matching switch, which may contain qualified enum constants intermixed with patterns), and so the `value` may be any object. If it is not an Enum, we can avoid the potential costly resolution.

I see shouldn't we then have a test that stresses this code?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16499#discussion_r1383825208


More information about the compiler-dev mailing list