> Currently, an enum switch with patterns is desugared in a very non-standard, > and potentially slow, way. It would be better to use the standard > `typeSwitch` bootstrap to classify the enum constants. The bootstrap needs to > accept enum constants as labels in order to allow this. A complication is > that if an enum constant is missing, that is not an incompatible change for > the switch, and the switch should simply work as if the case for the missing > constant didn't exist. So, the proposed solution is to have a new bootstrap > `enumSwitch` that accepts `String`s in place of the enum constants, and will > internally convert them to the appropriate enum constants, and then it will > find the proper case similarly to `typeSwitch`. > > How does this look?
Jan Lahoda has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains ten commits: - Reflecting review comments. - Merge branch 'master' into JDK-8268766 - Improving javadoc. - Updating javadoc, as suggested. - Updating javadoc, code and tests as suggested. - Creating a new bootstrap method for (pattern matching) enum switches, as suggested. - Adding and fixing test. - Merging master. - 8268766: Desugaring of pattern matching enum switch should be improved ------------- Changes: https://git.openjdk.java.net/jdk17/pull/81/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk17&pr=81&range=05 Stats: 416 lines in 6 files changed: 278 ins; 68 del; 70 mod Patch: https://git.openjdk.java.net/jdk17/pull/81.diff Fetch: git fetch https://git.openjdk.java.net/jdk17 pull/81/head:pull/81 PR: https://git.openjdk.java.net/jdk17/pull/81