Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,16 @@ shortcut.

![Install plugin from disk](./docs/images/install_plugin_from_disk.png)

## Java 21 Support
## Java 26 Support

In [1211](https://github.com/palantir/palantir-java-format/pull/1211) we shipped Java 21 support. In order to use the
Java 21 formatting capabilities, ensure that either:
In [1211](https://github.com/palantir/palantir-java-format/pull/1211) we shipped Java 21 support. Since then we've
kept up with the language and now also support formatting the newer syntax introduced up through Java 26, including
module import declarations, compact source files and instance main methods, flexible constructor bodies, markdown
documentation comments, and unnamed patterns in deconstruction. In order to use these formatting capabilities, ensure
that either:

- the Gradle daemon and the Intellij Project SDK are set to Java 21
- the Gradle daemon and the Intellij Project SDK are set to Java 26 (or, at minimum, to the JDK version in which the
feature you're relying on was finalized)
- or that the gradle property `palantir.native.formatter=true`. This will run the formatter as a native image,
- independent of the Gradle daemon/Intellij project JDK version.

Expand Down
33 changes: 33 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,43 @@ javaVersions {
jdks {
daemonTarget = 21

jdk(22) {
distribution = 'azul-zulu'
jdkVersion = '22.32.15-22.0.2'
}

jdk(23) {
distribution = 'graalvm-ce'
jdkVersion = '23.0.1'
}

jdk(25) {
distribution = 'azul-zulu'
jdkVersion = '25.32.21-25.0.2'

// The bundled com.palantir.jdks.latest defaults (applied earlier in this file)
// pre-populate major version 25 with amazon-corretto, pinned per-OS/arch. JdkExtension
// configuration actions accumulate rather than replace, so those per-arch jdkVersion
// values are hard-set before this block runs and don't pick up the top-level override
// above. Re-pin every OS/arch explicitly to the desired Zulu build.
['macos', 'linux-glibc', 'linux-musl', 'windows'].each { osName ->
os(osName) {
['x86', 'x86-64', 'aarch64'].each { archName ->
arch(archName) {
jdkVersion = '25.32.21-25.0.2'
}
}
}
}
}

jdk(26) {
distribution = 'azul-zulu'
jdkVersion = '26.30.11-26.0.1'
}

jdkMajorVersionsToUse().add(JavaLanguageVersion.of("22"))
jdkMajorVersionsToUse().add(JavaLanguageVersion.of("23"))
jdkMajorVersionsToUse().add(JavaLanguageVersion.of("25"))
jdkMajorVersionsToUse().add(JavaLanguageVersion.of("26"))
}
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-glibc/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-linux_aarch64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-glibc/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2-glibc
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-glibc/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-linux_x64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-glibc/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2-glibc
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-glibc/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-linux_i686.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-glibc/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2-glibc
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-musl/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-linux_musl_aarch64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-musl/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2-musl
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-musl/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-linux_musl_x64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-musl/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2-musl
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-musl/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-linux_musl_i686.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/22/linux-musl/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2-musl
1 change: 1 addition & 0 deletions gradle/jdks/22/macos/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-macosx_aarch64.zip
1 change: 1 addition & 0 deletions gradle/jdks/22/macos/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2
1 change: 1 addition & 0 deletions gradle/jdks/22/macos/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-macosx_x64.zip
1 change: 1 addition & 0 deletions gradle/jdks/22/macos/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2
1 change: 1 addition & 0 deletions gradle/jdks/22/macos/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-macosx_i686.zip
1 change: 1 addition & 0 deletions gradle/jdks/22/macos/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2
1 change: 1 addition & 0 deletions gradle/jdks/22/windows/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-win_aarch64.zip
1 change: 1 addition & 0 deletions gradle/jdks/22/windows/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2
1 change: 1 addition & 0 deletions gradle/jdks/22/windows/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-win_x64.zip
1 change: 1 addition & 0 deletions gradle/jdks/22/windows/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2
1 change: 1 addition & 0 deletions gradle/jdks/22/windows/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-win_i686.zip
1 change: 1 addition & 0 deletions gradle/jdks/22/windows/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-22.32.15-22.0.2
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-glibc/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-linux_aarch64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-glibc/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2-glibc
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-glibc/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-linux_x64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-glibc/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2-glibc
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-glibc/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-linux_i686.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-glibc/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2-glibc
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-musl/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-linux_musl_aarch64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-musl/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2-musl
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-musl/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-linux_musl_x64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-musl/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2-musl
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-musl/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-linux_musl_i686.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/25/linux-musl/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2-musl
1 change: 1 addition & 0 deletions gradle/jdks/25/macos/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-macosx_aarch64.zip
1 change: 1 addition & 0 deletions gradle/jdks/25/macos/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2
1 change: 1 addition & 0 deletions gradle/jdks/25/macos/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-macosx_x64.zip
1 change: 1 addition & 0 deletions gradle/jdks/25/macos/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2
1 change: 1 addition & 0 deletions gradle/jdks/25/macos/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-macosx_i686.zip
1 change: 1 addition & 0 deletions gradle/jdks/25/macos/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2
1 change: 1 addition & 0 deletions gradle/jdks/25/windows/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-win_aarch64.zip
1 change: 1 addition & 0 deletions gradle/jdks/25/windows/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2
1 change: 1 addition & 0 deletions gradle/jdks/25/windows/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-win_x64.zip
1 change: 1 addition & 0 deletions gradle/jdks/25/windows/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2
1 change: 1 addition & 0 deletions gradle/jdks/25/windows/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-win_i686.zip
1 change: 1 addition & 0 deletions gradle/jdks/25/windows/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-25.32.21-25.0.2
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-glibc/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-linux_aarch64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-glibc/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1-glibc
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-glibc/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-linux_x64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-glibc/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1-glibc
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-glibc/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-linux_i686.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-glibc/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1-glibc
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-musl/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-linux_musl_aarch64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-musl/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1-musl
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-musl/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-linux_musl_x64.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-musl/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1-musl
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-musl/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-linux_musl_i686.tar.gz
1 change: 1 addition & 0 deletions gradle/jdks/26/linux-musl/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1-musl
1 change: 1 addition & 0 deletions gradle/jdks/26/macos/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-macosx_aarch64.zip
1 change: 1 addition & 0 deletions gradle/jdks/26/macos/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1
1 change: 1 addition & 0 deletions gradle/jdks/26/macos/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-macosx_x64.zip
1 change: 1 addition & 0 deletions gradle/jdks/26/macos/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1
1 change: 1 addition & 0 deletions gradle/jdks/26/macos/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-macosx_i686.zip
1 change: 1 addition & 0 deletions gradle/jdks/26/macos/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1
1 change: 1 addition & 0 deletions gradle/jdks/26/windows/aarch64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-win_aarch64.zip
1 change: 1 addition & 0 deletions gradle/jdks/26/windows/aarch64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1
1 change: 1 addition & 0 deletions gradle/jdks/26/windows/x86-64/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-win_x64.zip
1 change: 1 addition & 0 deletions gradle/jdks/26/windows/x86-64/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1
1 change: 1 addition & 0 deletions gradle/jdks/26/windows/x86/download-url
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://cdn.azul.com/zulu/bin/zulu26.30.11-ca-jdk26.0.1-win_i686.zip
1 change: 1 addition & 0 deletions gradle/jdks/26/windows/x86/local-path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
azul-zulu-26.30.11-26.0.1
42 changes: 42 additions & 0 deletions palantir-java-format/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,45 @@ tasks.named("test") {
javaVersion {
target = 21
}

// The default `test` task runs on JDK 21 (see the root `javaVersions.runtime`), which exercises
// the Java21InputAstVisitor dispatch branch and all Java-21-and-earlier golden tests; newer-feature
// golden tests self-skip on JDK 21 via FileBasedTests#assumeJavaVersionForTest. To get *native*
// coverage of the newer dispatch branches (Java25InputAstVisitor, Java26InputAstVisitor) and the
// golden tests gated on newer feature JDKs (MarkdownDoc @ 23, UnnamedPattern @ 22,
// FlexibleConstructor/ModuleImport/CompactSource @ 25), run the same version-gated golden suites
// again on each additional JDK registered in the root `jdks { }` block. The JDK-independent unit
// tests are already covered once by the default JDK-21 `test`, so these extra legs only re-run the
// file-based integration suites.
[22, 23, 25, 26].each { jdkVersion ->
tasks.register("testJdk${jdkVersion}", Test) {
group = 'verification'
description = "Runs the JDK-version-gated golden test suites on JDK ${jdkVersion}."

javaLauncher = javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(jdkVersion)
}

testClassesDirs = sourceSets.test.output.classesDirs
classpath = sourceSets.test.runtimeClasspath
useJUnitPlatform()
systemProperty 'recreate', System.getProperty('recreate', 'false')

filter {
includeTestsMatching 'com.palantir.javaformat.java.FormatterIntegrationTest'
includeTestsMatching 'com.palantir.javaformat.java.StringWrapperIntegrationTest'
if (jdkVersion >= 25) {
// The module-import case in RemoveUnusedImportsTest guards a JDK-25+-only
// ClassCastException fix for JCModuleImport and self-skips below JDK 25, so it
// needs native coverage on these legs (it's otherwise never exercised by the
// JDK-21 default `test`, which skips it, or by the integration suites above,
// which never call removeUnusedImports).
includeTestsMatching 'com.palantir.javaformat.java.RemoveUnusedImportsTest'
}
}
}
}

tasks.named('check') {
dependsOn tasks.named('testJdk22'), tasks.named('testJdk23'), tasks.named('testJdk25'), tasks.named('testJdk26')
}
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,11 @@ static JavaOutput format(
OpsBuilder opsBuilder = new OpsBuilder(javaInput);

JavaInputAstVisitor visitor;
if (getRuntimeVersion() >= 21) {
if (getRuntimeVersion() >= 26) {
visitor = createVisitor("com.palantir.javaformat.java.java26.Java26InputAstVisitor", opsBuilder, options);
} else if (getRuntimeVersion() >= 25) {
visitor = createVisitor("com.palantir.javaformat.java.java25.Java25InputAstVisitor", opsBuilder, options);
} else if (getRuntimeVersion() >= 21) {
visitor = createVisitor("com.palantir.javaformat.java.java21.Java21InputAstVisitor", opsBuilder, options);
} else if (getRuntimeVersion() >= 14) {
visitor = createVisitor("com.palantir.javaformat.java.java14.Java14InputAstVisitor", opsBuilder, options);
Expand Down
Loading