Remove devirtualizer option in test
Bug: 140233505
Change-Id: Ic731fb969e1584c1e60a17a68acd09210d9b744e
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java
index cd3e666..2330854 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomCollectionTest.java
@@ -90,11 +90,6 @@
.addInnerClasses(CustomCollectionTest.class)
.setMinApi(parameters.getApiLevel())
.addKeepClassAndMembersRules(Executor.class)
- .addOptionsModification(
- options -> {
- // TODO(b/140233505): Allow devirtualization once fixed.
- options.enableDevirtualization = false;
- })
.enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
.compile()
.inspect(
@@ -145,22 +140,28 @@
instr ->
instr.toString().contains("$-EL")
|| instr.toString().contains("Comparator$-CC")));
- inherited.streamInstructions().forEach(CustomCollectionTest::assertEmulatedInterfaceDispatch);
+ inherited.streamInstructions().forEach(x -> assertInheritedDispatchCorrect(x, r8));
}
- private static void assertEmulatedInterfaceDispatch(InstructionSubject instructionSubject) {
+ private void assertInheritedDispatchCorrect(InstructionSubject instructionSubject, boolean r8) {
if (!instructionSubject.isConstString(JumboStringMode.ALLOW)) {
for (String s : new String[] {"stream", "parallelStream", "spliterator", "sort"}) {
if (instructionSubject.toString().contains(s)) {
- assertTrue(instructionSubject.isInvokeStatic());
- assertTrue(
- instructionSubject.toString().contains("$-EL")
- || instructionSubject.toString().contains("Comparator$-CC"));
+ if (!r8 || instructionSubject.isInvokeStatic()) {
+ assertTrue(instructionSubject.isInvokeStatic());
+ assertTrue(
+ instructionSubject.toString().contains("$-EL")
+ || instructionSubject.toString().contains("Comparator$-CC"));
+ } else {
+ // Has been devirtualized.
+ assertTrue(instructionSubject.isInvokeVirtual());
+ }
}
}
}
}
+
static class Executor {
// In directTypes() the collections use directly their type which implements a j$ interface