Skip to content

Add support for Java 23 and Java 24#4901

Merged
jlerbsc merged 6 commits intojavaparser:masterfrom
rpx99:claude/add-java-23-24-support-018bgqTy8mGuzH89FWymTHnM
Nov 25, 2025
Merged

Add support for Java 23 and Java 24#4901
jlerbsc merged 6 commits intojavaparser:masterfrom
rpx99:claude/add-java-23-24-support-018bgqTy8mGuzH89FWymTHnM

Conversation

@rpx99
Copy link
Copy Markdown
Contributor

@rpx99 rpx99 commented Nov 20, 2025

Summary

Adds language level support for Java 23 and Java 24.

Changes

  • Added Java23Validator and Java24Validator (extend Java22Validator)
  • Added Java23PostProcessor and Java24PostProcessor (extend Java22PostProcessor)
  • Added JAVA_23 and JAVA_24 enum entries to ParserConfiguration
  • Updated BLEEDING_EDGE to JAVA_24
  • Extended yieldSupport array to include Java 23 and 24
  • Added comprehensive tests for both language levels

Notes

  • Neither Java 23 nor Java 24 introduce syntax changes that affect parsing
  • The validators and post-processors simply extend Java 22 counterparts
  • Java 25 support with JEPs 511, 512, and 513 will be handled in separate PRs

Related Issues

Closes #4699

Testing

All existing tests pass + new validator tests for Java 23/24

This commit adds language level support for Java 23 and Java 24.
Neither version introduces syntax changes that affect parsing, so the
validators and post-processors simply extend their Java 22 counterparts.

Changes:
- Add Java23Validator and Java24Validator (extend Java22Validator)
- Add Java23PostProcessor and Java24PostProcessor (extend Java22PostProcessor)
- Add JAVA_23 and JAVA_24 enum entries to ParserConfiguration
- Update BLEEDING_EDGE to JAVA_24
- Extend yieldSupport array to include JAVA_23 and JAVA_24
- Add comprehensive tests for Java 23 and Java 24 language levels

Related to: javaparser#4699

Note: Java 25 support with JEPs 511, 512, and 513 will be handled in
separate pull requests as those introduce syntax changes requiring
parser modifications.
@jlerbsc
Copy link
Copy Markdown
Collaborator

jlerbsc commented Nov 20, 2025

Can you use Spotless to fix formatting errors?

Apply consistent code style by moving closing braces to same line
as class declaration for empty class bodies, matching project conventions.

This fixes the CI check failure where the metamodel generator detected
formatting inconsistencies.
@rpx99
Copy link
Copy Markdown
Contributor Author

rpx99 commented Nov 20, 2025

Can you use Spotless to fix formatting errors?

Will do tomorrow

@jlerbsc
Copy link
Copy Markdown
Collaborator

jlerbsc commented Nov 20, 2025

Use mvn spotless:apply command to fix these formatting issues

@codecov
Copy link
Copy Markdown

codecov bot commented Nov 20, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 58.377%. Comparing base (d9d8bd0) to head (cf2e0d3).
⚠️ Report is 5 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##              master     #4901   +/-   ##
===========================================
  Coverage     58.377%   58.377%           
  Complexity      2534      2534           
===========================================
  Files            685       685           
  Lines          39310     39310           
  Branches        7134      7134           
===========================================
  Hits           22948     22948           
  Misses         13448     13448           
  Partials        2914      2914           
Flag Coverage Δ
AlsoSlowTests 58.377% <100.000%> (ø)
javaparser-core 58.377% <100.000%> (ø)
javaparser-symbol-solver 58.377% <100.000%> (ø)
jdk-10 57.946% <100.000%> (ø)
jdk-11 57.944% <100.000%> (ø)
jdk-12 57.944% <100.000%> (+0.002%) ⬆️
jdk-13 57.942% <100.000%> (-0.003%) ⬇️
jdk-14 58.179% <100.000%> (ø)
jdk-15 58.179% <100.000%> (ø)
jdk-16 58.156% <100.000%> (ø)
jdk-17 58.306% <100.000%> (-0.003%) ⬇️
jdk-18 58.308% <100.000%> (ø)
jdk-8 57.945% <100.000%> (ø)
jdk-9 57.943% <100.000%> (ø)
macos-latest 58.369% <100.000%> (ø)
ubuntu-latest 58.364% <100.000%> (ø)
windows-latest 58.359% <100.000%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ava/com/github/javaparser/ParserConfiguration.java 87.333% <100.000%> (ø)
...or/language_level_validations/Java23Validator.java 100.000% <100.000%> (ø)
...or/language_level_validations/Java24Validator.java 100.000% <100.000%> (ø)
.../validator/postprocessors/Java23PostProcessor.java 100.000% <100.000%> (ø)
.../validator/postprocessors/Java24PostProcessor.java 100.000% <100.000%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 43f1e42...cf2e0d3. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rpx99
Copy link
Copy Markdown
Contributor Author

rpx99 commented Nov 21, 2025

@jlerbsc Passes now.

@jlerbsc
Copy link
Copy Markdown
Collaborator

jlerbsc commented Nov 21, 2025

There are still issues with the code format.

@jlerbsc
Copy link
Copy Markdown
Collaborator

jlerbsc commented Nov 25, 2025

Can you complete this PR or should we close it?

@rpx99
Copy link
Copy Markdown
Contributor Author

rpx99 commented Nov 25, 2025

Can you complete this PR or should we close it?

I'm sorry but I cannot find any format issue.

On branch claude/add-java-23-24-support-018bgqTy8mGuzH89FWymTHnM
Your branch is up to date with 'origin/claude/add-java-23-24-support-018bgqTy8mGuzH89FWymTHnM'.

nothing to commit, working tree clean

@jlerbsc
Copy link
Copy Markdown
Collaborator

jlerbsc commented Nov 25, 2025

Did you use the spotless command from the JP project?

@johannescoetzee
Copy link
Copy Markdown
Collaborator

johannescoetzee commented Nov 25, 2025

@rpx99 if just running mvn spotless:apply doesn't change anything, try running the code generators (with ./run_core_metamodel_generator.sh && ./run_core_generators.sh).

edit: This is what we do in the github actions check to ensure that nothing is overwritten by codegen

@rpx99
Copy link
Copy Markdown
Contributor Author

rpx99 commented Nov 25, 2025

Yes. I did a mvn clean spotless:apply but somehow it does not show the formating issues the CI sees :-(

@johannescoetzee
Copy link
Copy Markdown
Collaborator

johannescoetzee commented Nov 25, 2025

Alternatively, you can take the git diff from the actions output and write it to a patch file, which you can then apply with git apply patchfile. This is described in a bit more detail in https://github.com/javaparser/javaparser/blob/master/CONTRIBUTING.md

 diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java23Validator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java23Validator.java
index 49f0a0b8c..06fb36434 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java23Validator.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java23Validator.java
@@ -18,7 +18,6 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Lesser General Public License for more details.
  */
-
 package com.github.javaparser.ast.validator.language_level_validations;
 
 /**
@@ -27,6 +26,7 @@ package com.github.javaparser.ast.validator.language_level_validations;
  * so this validator simply extends Java 22.
  */
 public class Java23Validator extends Java22Validator {
+
     public Java23Validator() {
         super();
     }
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java24Validator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java24Validator.java
index 76a552c00..87e96e2ec 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java24Validator.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/Java24Validator.java
@@ -18,7 +18,6 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Lesser General Public License for more details.
  */
-
 package com.github.javaparser.ast.validator.language_level_validations;
 
 /**
@@ -27,6 +26,7 @@ package com.github.javaparser.ast.validator.language_level_validations;
  * so this validator simply extends Java 23.
  */
 public class Java24Validator extends Java23Validator {
+
     public Java24Validator() {
         super();
     }
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java23PostProcessor.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java23PostProcessor.java
index d347780f6..6eb348a3e 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java23PostProcessor.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java23PostProcessor.java
@@ -18,7 +18,6 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Lesser General Public License for more details.
  */
-
 package com.github.javaparser.ast.validator.postprocessors;
 
 /**
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java24PostProcessor.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java24PostProcessor.java
index 20313f80a..c5c87fc7e 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java24PostProcessor.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/postprocessors/Java24PostProcessor.java
@@ -18,7 +18,6 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Lesser General Public License for more details.
  */
-
 package com.github.javaparser.ast.validator.postprocessors;
 
 /**

@jlerbsc
Copy link
Copy Markdown
Collaborator

jlerbsc commented Nov 25, 2025

Can you manually fix the 4 files?

@rpx99
Copy link
Copy Markdown
Contributor Author

rpx99 commented Nov 25, 2025

@rpx99 if just running mvn spotless:apply doesn't change anything, try running the code generators (with ./run_core_metamodel_generator.sh && ./run_core_generators.sh).

edit: This is what we do in the github actions check to ensure that nothing is overwritten by codegen

This seems to work!

@rpx99
Copy link
Copy Markdown
Contributor Author

rpx99 commented Nov 25, 2025

Can you check again, pls?

@jlerbsc jlerbsc merged commit 2d7b1d9 into javaparser:master Nov 25, 2025
35 checks passed
@jlerbsc
Copy link
Copy Markdown
Collaborator

jlerbsc commented Nov 25, 2025

Thank you for this contribution.

@jlerbsc jlerbsc added this to the next release milestone Nov 25, 2025
@jlerbsc jlerbsc added the PR: Changed A PR that changes implementation without changing behaviour (e.g. performance) label Nov 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: Changed A PR that changes implementation without changing behaviour (e.g. performance)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix the enums so that javaparser will be compilation compatible with JDK24?

4 participants