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);
   }