Fix issue in monomorphic method analysis

Bug: b/336791970
Change-Id: Ic01c05b54ad1746f72cd34662d649dbaf5151697
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/VirtualRootMethodsAnalysisBase.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/VirtualRootMethodsAnalysisBase.java
index 4f8fde7..0165f8e 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/VirtualRootMethodsAnalysisBase.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/VirtualRootMethodsAnalysisBase.java
@@ -219,17 +219,19 @@
               && !virtualRootMethod.hasSiblings()
               && !virtualRootMethod.isMayDispatchOutsideProgramSet()) {
             monomorphicVirtualRootMethods.add(rootCandidate);
-          } else {
+            return;
+          }
+          if (!rootCandidate.getHolder().isInterface()) {
             VirtualRootMethod singleDispatchTarget = virtualRootMethod.getSingleDispatchTarget();
             if (singleDispatchTarget != null) {
               virtualRootMethod.forEach(
                   method -> setRootMethod(method, virtualRootMethod, singleDispatchTarget));
               monomorphicVirtualNonRootMethods.add(singleDispatchTarget.getMethod());
-            } else {
-              virtualRootMethod.forEach(
-                  method -> setRootMethod(method, virtualRootMethod, virtualRootMethod));
+              return;
             }
           }
+          virtualRootMethod.forEach(
+              method -> setRootMethod(method, virtualRootMethod, virtualRootMethod));
         });
   }
 
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/callsites/PropagationFromBaseMethodWithSingleTargetTest.java b/src/test/java/com/android/tools/r8/ir/optimize/callsites/PropagationFromBaseMethodWithSingleTargetTest.java
index cfe8557..9a48d47 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/callsites/PropagationFromBaseMethodWithSingleTargetTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/callsites/PropagationFromBaseMethodWithSingleTargetTest.java
@@ -33,15 +33,6 @@
   }
 
   @Test
-  public void testJvm() throws Exception {
-    parameters.assumeJvmTestParameters();
-    testForJvm(parameters)
-        .addInnerClasses(getClass())
-        .run(parameters.getRuntime(), Main.class)
-        .assertSuccessWithOutputLines("B", "C");
-  }
-
-  @Test
   public void testR8() throws Exception {
     testForR8(parameters.getBackend())
         .addInnerClasses(getClass())
@@ -54,8 +45,7 @@
         .setMinApi(parameters)
         .compile()
         .run(parameters.getRuntime(), Main.class)
-        // TODO(b/336791970): Should succeed.
-        .assertFailureWithErrorThatThrows(NullPointerException.class);
+        .assertSuccessWithOutputLines("B", "C");
   }
 
   static class Main {