Removed unneeded code in resolution results.
Bug: 144085169
Change-Id: I59b414bd3d6939922401e0a3f35e577903312c7a
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfo.java b/src/main/java/com/android/tools/r8/graph/AppInfo.java
index 3066b4d..fc5e8db 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfo.java
@@ -670,7 +670,7 @@
return NoSuchMethodResult.INSTANCE;
}
// Fast path in the common case of a single method.
- if (false && maximallySpecificMethods.size() == 1) {
+ if (maximallySpecificMethods.size() == 1) {
return new SingleResolutionResult(maximallySpecificMethods.values().iterator().next());
}
DexEncodedMethod firstMaximallySpecificMethod = null;
@@ -696,7 +696,7 @@
if (nonAbstractMethods.size() == 1) {
return new SingleResolutionResult(nonAbstractMethods.get(0));
}
- return new IncompatibleClassResult(Collections.emptyList(), nonAbstractMethods);
+ return IncompatibleClassResult.create(nonAbstractMethods);
}
}
diff --git a/src/main/java/com/android/tools/r8/graph/ResolutionResult.java b/src/main/java/com/android/tools/r8/graph/ResolutionResult.java
index acc5942..c9f3991 100644
--- a/src/main/java/com/android/tools/r8/graph/ResolutionResult.java
+++ b/src/main/java/com/android/tools/r8/graph/ResolutionResult.java
@@ -313,9 +313,7 @@
return this;
}
- public void forEachFailureDependency(
- Consumer<DexProgramClass> classesCausingFailure,
- Consumer<DexEncodedMethod> methodsCausingFailure) {
+ public void forEachFailureDependency(Consumer<DexEncodedMethod> methodCausingFailureConsumer) {
// Default failure has no dependencies.
}
@@ -339,28 +337,24 @@
}
public static class IncompatibleClassResult extends FailedResolutionResult {
- static final IncompatibleClassResult INSTANCE = new IncompatibleClassResult();
+ static final IncompatibleClassResult INSTANCE =
+ new IncompatibleClassResult(Collections.emptyList());
- private final Collection<DexProgramClass> classesCausingError;
private final Collection<DexEncodedMethod> methodsCausingError;
- private IncompatibleClassResult() {
- this(Collections.emptyList(), Collections.emptyList());
- }
-
- IncompatibleClassResult(
- Collection<DexProgramClass> classesCausingError,
- Collection<DexEncodedMethod> methodsCausingError) {
- this.classesCausingError = classesCausingError;
+ private IncompatibleClassResult(Collection<DexEncodedMethod> methodsCausingError) {
this.methodsCausingError = methodsCausingError;
}
+ static IncompatibleClassResult create(Collection<DexEncodedMethod> methodsCausingError) {
+ return methodsCausingError.isEmpty()
+ ? INSTANCE
+ : new IncompatibleClassResult(methodsCausingError);
+ }
+
@Override
- public void forEachFailureDependency(
- Consumer<DexProgramClass> classesCausingFailure,
- Consumer<DexEncodedMethod> methodsCausingFailure) {
- this.classesCausingError.forEach(classesCausingFailure);
- this.methodsCausingError.forEach(methodsCausingFailure);
+ public void forEachFailureDependency(Consumer<DexEncodedMethod> methodCausingFailureConsumer) {
+ this.methodsCausingError.forEach(methodCausingFailureConsumer);
}
}
@@ -370,8 +364,5 @@
private NoSuchMethodResult() {
// Intentionally left empty.
}
-
- // TODO(b/144085169): Consider if the resolution resulting in a NoSuchMethodError should
- // be preserved by ensuring its class is marked. Otherwise, the error may become ClassNotFound.
}
}
diff --git a/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java b/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
index 7423075..02cb585 100644
--- a/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
+++ b/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
@@ -111,7 +111,7 @@
// to the failure.
if (resolutionResult.isFailedResolution()) {
List<DexEncodedMethod> targets = new ArrayList<>();
- resolutionResult.asFailedResolution().forEachFailureDependency(clazz -> {}, targets::add);
+ resolutionResult.asFailedResolution().forEachFailureDependency(targets::add);
if (!targets.isEmpty()) {
DexString firstRename = renaming.get(targets.get(0).method);
assert targets.stream().allMatch(target -> renaming.get(target.method) == firstRename);
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index a331b1a..9a346a3 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.Diagnostic;
import com.android.tools.r8.dex.IndexedItemCollection;
-import com.android.tools.r8.errors.Unimplemented;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
import com.android.tools.r8.graph.AppInfoWithSubtyping;
@@ -2111,9 +2110,6 @@
private void markFailedResolutionTargets(
FailedResolutionResult failedResolution, KeepReason reason) {
failedResolution.forEachFailureDependency(
- clazz -> {
- throw new Unimplemented();
- },
method -> {
DexProgramClass clazz = getProgramClassOrNull(method.method.holder);
if (clazz != null) {
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 af19bf1..581554b 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.TestBase;
@@ -58,7 +57,6 @@
resolutionResult
.asFailedResolution()
.forEachFailureDependency(
- clazz -> fail("Unexpected class dependency"),
target -> holders.add(target.method.holder.toSourceString()));
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 cc64e9c..47d7d65 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
@@ -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.TestBase;
@@ -59,7 +58,6 @@
resolutionResult
.asFailedResolution()
.forEachFailureDependency(
- clazz -> fail("Unexpected class dependency"),
m -> holders.add(m.method.holder.toSourceString()));
assertEquals(ImmutableSet.of(I.class.getTypeName(), J.class.getTypeName()), holders);
}