Cleanup supported JDK's
Only support LTS and latest non-LTS (but still JDK-9 for now).
This also removes the stubbed JDK-17 API's and use the library from
JDK-17 instead for record tests.
Change-Id: I244b265bbe76938930c2f8a91fe44b513d4b825b
diff --git a/src/test/examplesJava17/records/RecordBlogTest.java b/src/test/examplesJava17/records/RecordBlogTest.java
index 1128f07..37f1117 100644
--- a/src/test/examplesJava17/records/RecordBlogTest.java
+++ b/src/test/examplesJava17/records/RecordBlogTest.java
@@ -57,7 +57,7 @@
private boolean isCfRuntimeWithNativeRecordSupport() {
return parameters.isCfRuntime()
- && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK14)
+ && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17)
&& parameters.getApiLevel().equals(AndroidApiLevel.B);
}
diff --git a/src/test/examplesJava17/records/RecordHashCodeManyFieldsTest.java b/src/test/examplesJava17/records/RecordHashCodeManyFieldsTest.java
index 6c2a31b..1cd7313 100644
--- a/src/test/examplesJava17/records/RecordHashCodeManyFieldsTest.java
+++ b/src/test/examplesJava17/records/RecordHashCodeManyFieldsTest.java
@@ -37,7 +37,7 @@
private boolean isCfRuntimeWithNativeRecordSupport() {
return parameters.isCfRuntime()
- && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK14)
+ && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17)
&& parameters.getApiLevel().equals(AndroidApiLevel.B);
}
diff --git a/src/test/examplesJava17/records/RecordHashCodeTest.java b/src/test/examplesJava17/records/RecordHashCodeTest.java
index b0b0b0e..b5a21f4 100644
--- a/src/test/examplesJava17/records/RecordHashCodeTest.java
+++ b/src/test/examplesJava17/records/RecordHashCodeTest.java
@@ -37,7 +37,7 @@
private boolean isCfRuntimeWithNativeRecordSupport() {
return parameters.isCfRuntime()
- && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK14)
+ && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17)
&& parameters.getApiLevel().equals(AndroidApiLevel.B);
}
diff --git a/src/test/examplesJava17/records/RecordInterfaceTest.java b/src/test/examplesJava17/records/RecordInterfaceTest.java
index d5144b0..583ccb4 100644
--- a/src/test/examplesJava17/records/RecordInterfaceTest.java
+++ b/src/test/examplesJava17/records/RecordInterfaceTest.java
@@ -48,7 +48,7 @@
private boolean isCfRuntimeWithNativeRecordSupport() {
return parameters.isCfRuntime()
- && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK14)
+ && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17)
&& parameters.getApiLevel().equals(AndroidApiLevel.B);
}
diff --git a/src/test/examplesJava17/records/RecordInvokeCustomTest.java b/src/test/examplesJava17/records/RecordInvokeCustomTest.java
index ec3956a..55c9d9c 100644
--- a/src/test/examplesJava17/records/RecordInvokeCustomTest.java
+++ b/src/test/examplesJava17/records/RecordInvokeCustomTest.java
@@ -4,18 +4,17 @@
package records;
+import com.android.tools.r8.JdkClassFileProvider;
import com.android.tools.r8.R8FullTestBuilder;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.TestRuntime.CfRuntime;
import com.android.tools.r8.TestRuntime.CfVm;
-import com.android.tools.r8.desugar.LibraryFilesHelper;
import com.android.tools.r8.utils.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import records.RecordInvokeCustom.Empty;
-import records.RecordInvokeCustom.Person;
@RunWith(Parameterized.class)
public class RecordInvokeCustomTest extends TestBase {
@@ -83,7 +82,9 @@
.addKeepMainRule(RecordInvokeCustom.class);
if (parameters.isCfRuntime()) {
builder
- .addLibraryFiles(LibraryFilesHelper.getJdk15LibraryFiles(temp))
+ .addLibraryProvider(
+ JdkClassFileProvider.fromSystemModulesJdk(
+ CfRuntime.getCheckedInJdk17().getJavaHome()))
.compile()
.inspect(RecordTestUtils::assertRecordsAreRecords)
.run(parameters.getRuntime(), RecordInvokeCustom.class)
diff --git a/src/test/examplesJava17/records/SimpleRecordTest.java b/src/test/examplesJava17/records/SimpleRecordTest.java
index d7c8131..cfedd02 100644
--- a/src/test/examplesJava17/records/SimpleRecordTest.java
+++ b/src/test/examplesJava17/records/SimpleRecordTest.java
@@ -47,7 +47,7 @@
private boolean isCfRuntimeWithNativeRecordSupport() {
return parameters.isCfRuntime()
- && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK14)
+ && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17)
&& parameters.getApiLevel().equals(AndroidApiLevel.B);
}
diff --git a/src/test/java/com/android/tools/r8/rewrite/JavaScriptScriptEngineTest.java b/src/test/java/com/android/tools/r8/rewrite/JavaScriptScriptEngineTest.java
index 241c2f3..4af8c94 100644
--- a/src/test/java/com/android/tools/r8/rewrite/JavaScriptScriptEngineTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/JavaScriptScriptEngineTest.java
@@ -85,7 +85,7 @@
.run(parameters.getRuntime(), TestClass.class)
.applyIf(
// No default JS engine starting from JDK-14 where Nashorn was removed, see b/227162584.
- parameters.isCfRuntime() && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK14),
+ parameters.isCfRuntime() && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17),
r -> r.assertFailureWithErrorThatThrows(NullPointerException.class),
r ->
r.assertSuccessWithOutput(
diff --git a/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java b/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java
index a8e80aa..6865487 100644
--- a/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTest.java
@@ -115,7 +115,7 @@
parameters.isCfRuntime()
// No default JS engine starting from JDK-14 where Nashorn was removed,
// see b/227162584.
- ? (parameters.isCfRuntime() && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK14)
+ ? (parameters.isCfRuntime() && parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17)
? StringUtils.lines("MyEngine1", "MyEngine2")
: StringUtils.lines("MyEngine1", "MyEngine2", "Oracle Nashorn"))
: StringUtils.lines("Mozilla Rhino", "MyEngine1", "MyEngine2"));
diff --git a/src/test/testbase/java/com/android/tools/r8/TestRuntime.java b/src/test/testbase/java/com/android/tools/r8/TestRuntime.java
index f14cec1..889f7a3 100644
--- a/src/test/testbase/java/com/android/tools/r8/TestRuntime.java
+++ b/src/test/testbase/java/com/android/tools/r8/TestRuntime.java
@@ -35,11 +35,6 @@
JDK9("jdk9", 53),
JDK10("jdk10", 54),
JDK11("jdk11", 55),
- JDK12("jdk12", 56),
- JDK13("jdk13", 57),
- JDK14("jdk14", 58),
- JDK15("jdk15", 59),
- JDK16("jdk16", 60),
JDK17("jdk17", 61),
JDK18("jdk18", 62),
JDK20("jdk20", 64),
diff --git a/src/test/testbase/java/com/android/tools/r8/desugar/LibraryFilesHelper.java b/src/test/testbase/java/com/android/tools/r8/desugar/LibraryFilesHelper.java
index 0a605cb..a618531 100644
--- a/src/test/testbase/java/com/android/tools/r8/desugar/LibraryFilesHelper.java
+++ b/src/test/testbase/java/com/android/tools/r8/desugar/LibraryFilesHelper.java
@@ -39,48 +39,6 @@
return getJdk9LibraryFiles(temp);
}
- public static Path[] getJdk15LibraryFiles(TemporaryFolder temp) throws Exception {
- // TODO(b/270105162): We should be able to run this on windows.
- Assume.assumeFalse(ToolHelper.isWindows());
- // TODO(b/169645628): Add JDK-15 runtime jar instead. As a temporary solution we use the jdk 8
- // runtime with additional stubs.
- Path generatedJar = temp.newFolder().toPath().resolve("stubs.jar");
- ZipBuilder builder = ZipBuilder.builder(generatedJar);
- addRecord(builder);
- addRecordComponent(builder);
- addObjectsMethod(builder);
- addTypeDescriptor(builder);
- builder.build();
- return ObjectArrays.concat(getJdk9LibraryFiles(temp), new Path[] {generatedJar}, Path.class);
- }
-
- // Generates a class file for:
- // <pre>
- // public class ObjectMethods {}
- // </pre>
- private static void addObjectsMethod(ZipBuilder builder) throws Exception {
- addClassToZipBuilder(
- builder, ACC_PUBLIC, "java/lang/runtime/ObjectMethods", ConsumerUtils.emptyConsumer());
- }
-
- // Generates a class file for:
- // <pre>
- // public interface TypeDescriptor {
- // String descriptorString();
- // }
- // </pre>
- private static void addTypeDescriptor(ZipBuilder builder) throws Exception {
- addClassToZipBuilder(
- builder,
- ACC_PUBLIC | ACC_INTERFACE | ACC_ABSTRACT,
- "java/lang/invoke/TypeDescriptor",
- methodAdder ->
- methodAdder.add(
- ACC_PUBLIC | ACC_ABSTRACT,
- "descriptorString",
- methodDescriptor(false, String.class)));
- }
-
// Generates a class file for:
// <pre>
// public class StringConcatFactory {}
@@ -101,45 +59,6 @@
// Generates a class file for:
// <pre>
- // public abstract class Record {
- // protected Record() {}
- //
- // public abstract boolean equals(Object obj);
- //
- // public abstract int hashCode();
- //
- // public abstract String toString();
- // }
- // </pre>
- private static void addRecord(ZipBuilder builder) throws Exception {
- addClassToZipBuilder(
- builder,
- ACC_PUBLIC | ACC_ABSTRACT,
- "java/lang/Record",
- methodAdder -> {
- methodAdder.add(ACC_PROTECTED, "<init>", "()V");
- methodAdder.add(
- ACC_PUBLIC | ACC_ABSTRACT,
- "equals",
- methodDescriptor(false, Object.class, boolean.class));
- methodAdder.add(
- ACC_PUBLIC | ACC_ABSTRACT, "hashCode", methodDescriptor(false, int.class));
- methodAdder.add(
- ACC_PUBLIC | ACC_ABSTRACT, "toString", methodDescriptor(false, String.class));
- });
- }
-
- // Generates a class file for:
- // <pre>
- // public class RecordComponent {}
- // </pre>
- private static void addRecordComponent(ZipBuilder builder) throws Exception {
- addClassToZipBuilder(
- builder, ACC_PUBLIC, "java/lang/reflect/RecordComponent", ConsumerUtils.emptyConsumer());
- }
-
- // Generates a class file for:
- // <pre>
// public interface Supplier {
// Object get();
// }
diff --git a/tools/jdk.py b/tools/jdk.py
index d795230..86f2c3a 100755
--- a/tools/jdk.py
+++ b/tools/jdk.py
@@ -10,8 +10,7 @@
JDK_DIR = os.path.join(defines.THIRD_PARTY, 'openjdk')
-ALL_JDKS = ['openjdk-9.0.4', 'jdk-11', 'jdk-15', 'jdk-16', 'jdk-17',
- 'jdk-18', 'jdk-21', 'jdk-23']
+ALL_JDKS = ['openjdk-9.0.4', 'jdk-11', 'jdk-17', 'jdk-21', 'jdk-23']
def GetJdkHome():