New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8262889: Compiler implementation for Record Patterns #8516
Conversation
👋 Welcome back jlahoda! A progress list of the required criteria for merging this PR into |
/contributor briangoetz |
I've noticed that this code:
fails with:
before this change but gets accepted with no errors after the change in this PR |
Oops, sorry, should be fixed now (a0d0c78). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good to me, great job!
The dependent pull request has now been integrated, and the target branch of this pull request has been updated. This means that changes from the dependent pull request can start to show up as belonging to this pull request, which may be confusing for reviewers. To remedy this situation, simply merge the latest changes from the new target branch into this pull request by running commands similar to these in the local repository for your personal fork: git checkout patterns-record-deconstruction3
git fetch https://git.openjdk.java.net/jdk master
git merge FETCH_HEAD
# if there are conflicts, follow the instructions given by git merge
git commit -m "Merge master"
git push |
@lahodaj this pull request can not be integrated into git checkout patterns-record-deconstruction3
git fetch https://git.openjdk.java.net/jdk master
git merge FETCH_HEAD
# resolve conflicts and follow the instructions given by git merge
git commit -m "Merge master"
git push |
|
@lahodaj This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been no new commits pushed to the ➡️ To integrate this PR with the above commit message to the |
/contributor abimpoudis |
@lahodaj Syntax:
User names can only be used for users in the census associated with this repository. For other contributors you need to supply the full name and email address. |
/contributor add @lahodaj |
@lahodaj |
/contributor add abimpoudis |
@lahodaj |
/integrate |
Going to push as commit e9bddc1.
Your commit was automatically rebased without conflicts. |
Yai ! champagne (at least virtual). |
8262889: Compiler implementation for Record Patterns
A first version of a patch that introduces record patterns into javac as a preview feature. For the specification, please see:
http://cr.openjdk.java.net/~gbierman/jep427+405/jep427+405-20220426/specs/patterns-switch-record-patterns-jls.html
There are two notable tricky parts:
-in the parser, it was necessary to improve the
analyzePattern
method to handle nested/record patterns, while still keeping error recovery reasonable-in the
TransPatterns
, the desugaring of the record patterns is very straightforward - effectivelly the record patterns are desugared into guards/conditions. This will likely be improved in some future version/previewMatchException
has been extended to cover additional cases related to record patterns.Progress
Issues
Reviewers
Contributors
<briangoetz@openjdk.org>
<jlahoda@openjdk.org>
<abimpoudis@openjdk.org>
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/8516/head:pull/8516
$ git checkout pull/8516
Update a local copy of the PR:
$ git checkout pull/8516
$ git pull https://git.openjdk.java.net/jdk pull/8516/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 8516
View PR using the GUI difftool:
$ git pr show -t 8516
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/8516.diff