Fix test expectation after updates to maximally specific result
Change-Id: I6c2d9cf6b1a46eb7bfad543b40788d4bd86ed1ef
diff --git a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java
index d609491..927c455 100644
--- a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java
@@ -6,6 +6,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.R8FullTestBuilder;
@@ -83,19 +84,28 @@
appInfo.unsafeResolveMethodDueToDexFormat(method);
assertTrue(methodResolutionResult.isMultiMethodResolutionResult());
Set<String> methodResults = new HashSet<>();
+ Set<String> failedTypes = new HashSet<>();
methodResolutionResult.forEachMethodResolutionResult(
result -> {
- assertTrue(result.isSingleResolution());
- SingleResolutionResult<?> resolution = result.asSingleResolution();
- methodResults.add(
- (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
- + resolution.getResolvedMethod().getReference().toString());
+ if (result.isSingleResolution()) {
+ SingleResolutionResult<?> resolution = result.asSingleResolution();
+ methodResults.add(
+ (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
+ + resolution.getResolvedMethod().getReference().toString());
+ } else {
+ assertTrue(result.isFailedResolution());
+ result
+ .asFailedResolution()
+ .forEachFailureDependency(
+ type -> failedTypes.add(type.toDescriptorString()), m -> fail());
+ }
});
assertEquals(
ImmutableSet.of(
"Library: void " + typeName(I.class) + ".foo()",
"Program: void " + typeName(J.class) + ".foo()"),
methodResults);
+ assertEquals(ImmutableSet.of(descriptor(J.class)), failedTypes);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java
index 2b291f6..fb556ff 100644
--- a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java
+++ b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java
@@ -6,6 +6,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.TestBase;
@@ -83,13 +84,21 @@
appInfo.unsafeResolveMethodDueToDexFormat(method);
assertTrue(methodResolutionResult.isMultiMethodResolutionResult());
Set<String> methodResults = new HashSet<>();
+ Set<String> failedTypes = new HashSet<>();
methodResolutionResult.forEachMethodResolutionResult(
result -> {
- assertTrue(result.isSingleResolution());
- SingleResolutionResult<?> resolution = result.asSingleResolution();
- methodResults.add(
- (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
- + resolution.getResolvedMethod().getReference().toString());
+ if (result.isSingleResolution()) {
+ SingleResolutionResult<?> resolution = result.asSingleResolution();
+ methodResults.add(
+ (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
+ + resolution.getResolvedMethod().getReference().toString());
+ } else {
+ assertTrue(result.isFailedResolution());
+ result
+ .asFailedResolution()
+ .forEachFailureDependency(
+ type -> failedTypes.add(type.toDescriptorString()), m -> fail());
+ }
});
assertEquals(
ImmutableSet.of(
@@ -98,6 +107,7 @@
"Library: void " + typeName(J.class) + ".foo()",
"Program: void " + typeName(J.class) + ".foo()"),
methodResults);
+ assertEquals(ImmutableSet.of(descriptor(J.class), descriptor(I.class)), failedTypes);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java
index a70390c..0f35c0a 100644
--- a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java
@@ -6,6 +6,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.TestBase;
@@ -86,19 +87,28 @@
appInfo.unsafeResolveMethodDueToDexFormat(method);
assertTrue(methodResolutionResult.isMultiMethodResolutionResult());
Set<String> methodResults = new HashSet<>();
+ Set<String> failedTypes = new HashSet<>();
methodResolutionResult.forEachMethodResolutionResult(
result -> {
- assertTrue(result.isSingleResolution());
- SingleResolutionResult<?> resolution = result.asSingleResolution();
- methodResults.add(
- (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
- + resolution.getResolvedMethod().getReference().toString());
+ if (result.isSingleResolution()) {
+ SingleResolutionResult<?> resolution = result.asSingleResolution();
+ methodResults.add(
+ (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
+ + resolution.getResolvedMethod().getReference().toString());
+ } else {
+ assertTrue(result.isFailedResolution());
+ result
+ .asFailedResolution()
+ .forEachFailureDependency(
+ type -> failedTypes.add(type.toDescriptorString()), m -> fail());
+ }
});
assertEquals(
ImmutableSet.of(
"Library: void " + typeName(I.class) + ".foo()",
"Program: void " + typeName(J.class) + ".foo()"),
methodResults);
+ assertEquals(ImmutableSet.of(descriptor(J.class), descriptor(I.class)), failedTypes);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
index 7e76e3e..34f972a 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
@@ -5,7 +5,6 @@
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.TestAppViewBuilder;
@@ -56,10 +55,13 @@
DexMethod method = buildNullaryVoidMethod(B.class, "f", appInfo.dexItemFactory());
MethodResolutionResult resolutionResult = appInfo.resolveMethodOnClassHolderLegacy(method);
Set<String> holders = new HashSet<>();
+ Set<String> failedTypes = new HashSet<>();
resolutionResult
.asFailedResolution()
.forEachFailureDependency(
- type -> fail(), target -> holders.add(target.getHolderType().toSourceString()));
+ type -> failedTypes.add(type.toSourceString()),
+ target -> holders.add(target.getHolderType().toSourceString()));
+ assertEquals(holders, failedTypes);
assertEquals(ImmutableSet.of(L.class.getTypeName(), R.class.getTypeName()), holders);
}
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
index b3b1f8e..ff41559 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
@@ -6,7 +6,6 @@
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.TestAppViewBuilder;
@@ -80,10 +79,13 @@
// When not desugaring resolution should fail. Check the failure dependencies are the two
// default methods in conflict.
Set<String> holders = new HashSet<>();
+ Set<String> failedTypes = new HashSet<>();
resolutionResult
.asFailedResolution()
.forEachFailureDependency(
- type -> fail(), m -> holders.add(m.getHolderType().toSourceString()));
+ type -> failedTypes.add(type.toSourceString()),
+ m -> holders.add(m.getHolderType().toSourceString()));
+ assertEquals(holders, failedTypes);
assertEquals(ImmutableSet.of(I.class.getTypeName(), J.class.getTypeName()), holders);
}
}