Skip to content

Commit 60c1e36

Browse files
authored
Revise management of Eclipse-related Java versions (#1866)
The `com.ibm.wala.jdk-version` Gradle property determines the Java toolchain used for compiling and testing Java code. Previously, it also influenced the Java release used when compiling Eclipse-_dependent_ Java code. However, this property does _not_ influence the Java release used when compiling Elipse-_independent_ code. Rather, [the latter is always hard-coded to release 11](https://github.com/wala/WALA/blob/c9fdc915544051266700e0cacaea0e0ab7bd5877/build-logic/src/main/kotlin/com/ibm/wala/gradle/java.gradle.kts#L62). Now we hard-code the Java release used when compiling Eclipse-dependent code too: 17, not 11, because some Eclipse dependencies use 17. When using the ECJ batch compiler, set the Java release using `--release N` instead of `-source N -target N` or simply `-N`. [The documentation on how these flags interact is poor](https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-using_batch_compiler.htm). But after experimenting and examining [the ECJ implementation](https://github.com/eclipse-jdt/eclipse.jdt.core/blob/5da60278fd97d15570cbbc07219a6ab525d91feb/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/Main.java), I believe that `--release N` does everything that `-N -source N -target N` would do.
1 parent c9fdc91 commit 60c1e36

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

build-logic/src/main/kotlin/com/ibm/wala/gradle/JavaCompileUsingEcj.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,8 @@ abstract class JavaCompileUsingEcj : JavaCompile() {
5252
options.compilerArgumentProviders.run {
5353
add {
5454
listOf(
55-
"-source",
56-
sourceCompatibility,
57-
"-target",
58-
targetCompatibility,
55+
"--release",
56+
options.release.get().toString(),
5957
"-properties",
6058
jdtPrefs.toString(),
6159
"-classpath",

build-logic/src/main/kotlin/com/ibm/wala/gradle/eclipse-maven-central.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ plugins {
1515
// WALA uses elsewhere.
1616
java.toolchain.languageVersion = the<EclipseCompatibleJavaExtension>().languageVersion
1717

18+
// When building Eclipse-compatible code, always generate Java 17 bitcode, and assume a Java 17
19+
// standard library.
20+
tasks.withType<JavaCompile>().configureEach { options.release = 17 }
21+
1822
/**
1923
* WALA-specialized adaptation of
2024
* [ReleaseConfigurer](https://javadoc.io/doc/com.diffplug.gradle/goomph/latest/com/diffplug/gradle/eclipse/MavenCentralExtension.ReleaseConfigurer.html).

0 commit comments

Comments
 (0)