Update remaining PermittedSubclasses tests
Bug: b/434135087
Change-Id: I8545dc523a0e796b792f093683b9e839a2679c20
diff --git a/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromPermittedSubclassesAttributeTest.java b/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromPermittedSubclassesAttributeTest.java
index af6954b..07ba779 100644
--- a/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromPermittedSubclassesAttributeTest.java
+++ b/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromPermittedSubclassesAttributeTest.java
@@ -48,9 +48,11 @@
}
private void inspect(CodeInspector inspector) {
- // Missing classes stays in the PermittedSubclasses attribute.
+ // Missing classes stays in the PermittedSubclasses attribute. This test does not validate
+ // the class file version, so for testing JDK's below 17 the PermittedSubclasses attributes is
+ // still present (the code will not run, but the tests does not run the code).
assertEquals(
- parameters.isCfRuntime()
+ hasSealedClassesSupport(parameters) || parameters.isCfRuntime()
? ImmutableList.of(
inspector.clazz(Sub.class).asTypeSubject(),
inspector.getTypeSubject(MissingSub.class.getTypeName()))
diff --git a/src/test/java17/com/android/tools/r8/jdk17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java b/src/test/java17/com/android/tools/r8/jdk17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java
index a6d1aed..9dba446 100644
--- a/src/test/java17/com/android/tools/r8/jdk17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java
@@ -79,7 +79,7 @@
ClassSubject sub1 = inspector.clazz(Enum.B.getClass());
assertThat(sub1, isPresentAndRenamed());
assertEquals(
- parameters.isCfRuntime() && keepPermittedSubclassesAttribute
+ hasSealedClassesSupport(parameters) && keepPermittedSubclassesAttribute
? ImmutableList.of(sub1.asTypeSubject())
: ImmutableList.of(),
clazz.getFinalPermittedSubclassAttributes());
@@ -88,6 +88,8 @@
@Test
public void testR8() throws Exception {
parameters.assumeR8TestParameters();
+ assumeTrue(
+ parameters.isDexRuntime() || parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17));
parameters.assumeNoPartialCompilation("TODO");
testForR8(parameters.getBackend())
.addInnerClassesAndStrippedOuter(getClass())
@@ -100,10 +102,7 @@
.compile()
.inspect(this::inspect)
.run(parameters.getRuntime(), Main.class)
- .applyIf(
- parameters.isDexRuntime() || parameters.asCfRuntime().isNewerThanOrEqual(CfVm.JDK17),
- r -> r.assertSuccessWithOutput(EXPECTED),
- r -> r.assertFailureWithErrorThatThrows(UnsupportedClassVersionError.class));
+ .assertSuccessWithOutput(EXPECTED);
}
public enum Enum {
diff --git a/src/test/testbase/java/com/android/tools/r8/TestBase.java b/src/test/testbase/java/com/android/tools/r8/TestBase.java
index 23e0f00..aa40c91 100644
--- a/src/test/testbase/java/com/android/tools/r8/TestBase.java
+++ b/src/test/testbase/java/com/android/tools/r8/TestBase.java
@@ -1874,8 +1874,9 @@
}
public static boolean hasSealedClassesSupport(TestParameters parameters) {
- return (parameters.isCfRuntime() && parameters.getCfRuntime().hasRecordsSupport())
- || parameters.getApiLevel().isGreaterThanOrEqualTo(apiLevelWithSealedClassesSupport());
+ return (parameters.isCfRuntime() && parameters.getCfRuntime().hasSealedClassesSupport())
+ || (parameters.isDexRuntime()
+ && parameters.getApiLevel().isGreaterThanOrEqualTo(apiLevelWithSealedClassesSupport()));
}
public static boolean isRecordsFullyDesugaredForD8(TestParameters parameters) {