mirror of
https://github.com/apple/pkl.git
synced 2026-04-28 19:27:18 +02:00
Upgrade JVM toolchain to 25 and Kotlin toolchain to 2.3.20 (#1516)
Motivation - Enable correct NullAway analysis - Pick up toolchain fixes and improvements Toolchains - Require JDK 25 for JVM toolchain (keep Java 17 runtime compatibility) - Require Kotlin 2.3.20 for Kotlin toolchain (keep Kotlin 2.2 runtime compatibility) - Require JDK 25 for Gradle daemon JVM (via gradle-daemon-jvm.properties) - Fix javac and kotlinc warnings from toolchain upgrades CI - Bump GitHub workflows to JDK 25 Building Kotlin - Bump Kotlin language level to 2.2 to match stdlib version - Consolidate build logic into pklKotlinBase.gradle.kts - Adopt modern Kotlin plugin syntax - Fix new kotlinc warnings - Update ktfmt to 0.62 - first version compatible with Kotlin 2.3.20 - changes formatting compared to 0.61 - Replace dependency resolution rule with BOM alignment - rule was too broad and interfered with toolchain/runtime separation Testing - Expand matrix to JDK 25 (LTS) and 26 - Ensure each matrix task can be run independently - Fix KotlinCodeGeneratorsTest and EmbeddedExecutorsTest on affected JDKs - Disable one test in CliCommandTest on affected JDKs (failure cause unknown) Compatibility fixes - Fix reflective access in DocGenerator on affected JDKs Build fixes - Fix misuse of `task.enabled` vs. `report.required` - Fix `gradlew tasks` on Windows - Downgrade Spotless to 8.3.0 to (hopefully) work around sporadic NoClassDefFoundError Result - NullAway runs correctly - Broader JDK test coverage - More reproducible and potentially faster builds
This commit is contained in:
@@ -82,7 +82,7 @@ data class JavaCodeGeneratorOptions(
|
||||
*
|
||||
* The specified annotation type must have a [java.lang.annotation.Target] of
|
||||
* [java.lang.annotation.ElementType.TYPE_USE] or the generated code may not compile. If set to
|
||||
* `null`, [org.pkl.config.java.mapper.NonNull] will be used.
|
||||
* `null`, `org.pkl.config.java.mapper.NonNull` will be used.
|
||||
*/
|
||||
val nonNullAnnotation: String? = null,
|
||||
|
||||
@@ -105,7 +105,7 @@ class JavaCodeGenerator(
|
||||
) {
|
||||
|
||||
companion object {
|
||||
private val OBJECT = ClassName.get(Object::class.java)
|
||||
private val OBJECT = ClassName.get(Any::class.java)
|
||||
private val STRING = ClassName.get(String::class.java)
|
||||
private val DURATION = ClassName.get(Duration::class.java)
|
||||
private val DURATION_UNIT = ClassName.get(DurationUnit::class.java)
|
||||
@@ -295,7 +295,7 @@ class JavaCodeGenerator(
|
||||
MethodSpec.methodBuilder("equals")
|
||||
.addModifiers(Modifier.PUBLIC)
|
||||
.addAnnotation(Override::class.java)
|
||||
.addParameter(Object::class.java, "obj")
|
||||
.addParameter(Any::class.java, "obj")
|
||||
.returns(Boolean::class.java)
|
||||
.addStatement("if (this == obj) return true")
|
||||
.addStatement("if (obj == null) return false")
|
||||
@@ -418,7 +418,7 @@ class JavaCodeGenerator(
|
||||
val hasJavadoc =
|
||||
docComment != null && codegenOptions.generateJavadoc && !codegenOptions.generateGetters
|
||||
if (hasJavadoc) {
|
||||
builder.addJavadoc(renderAsJavadoc(docComment!!))
|
||||
builder.addJavadoc(renderAsJavadoc(docComment))
|
||||
}
|
||||
|
||||
if (codegenOptions.generateGetters) {
|
||||
@@ -466,7 +466,7 @@ class JavaCodeGenerator(
|
||||
val docComment = property.docComment
|
||||
val hasJavadoc = docComment != null && codegenOptions.generateJavadoc
|
||||
if (hasJavadoc) {
|
||||
builder.addJavadoc(renderAsJavadoc(docComment!!))
|
||||
builder.addJavadoc(renderAsJavadoc(docComment))
|
||||
}
|
||||
|
||||
generateDeprecation(
|
||||
@@ -583,7 +583,7 @@ class JavaCodeGenerator(
|
||||
val docComment = pClass.docComment
|
||||
val hasJavadoc = docComment != null && codegenOptions.generateJavadoc
|
||||
if (hasJavadoc) {
|
||||
builder.addJavadoc(renderAsJavadoc(docComment!!))
|
||||
builder.addJavadoc(renderAsJavadoc(docComment))
|
||||
}
|
||||
|
||||
generateDeprecation(
|
||||
@@ -707,7 +707,7 @@ class JavaCodeGenerator(
|
||||
.addModifiers(Modifier.STATIC)
|
||||
.addParameter(StringBuilder::class.java, "builder")
|
||||
.addParameter(String::class.java, "name")
|
||||
.addParameter(Object::class.java, "value")
|
||||
.addParameter(Any::class.java, "value")
|
||||
.addStatement("builder.append(\"\\n \").append(name).append(\" = \")")
|
||||
.addStatement(
|
||||
"\$T lines = \$T.toString(value).split(\"\\n\")",
|
||||
|
||||
Reference in New Issue
Block a user