Fix test of inlining targets with non resolved methods

The current test is actually testing if we inline into a method instead (same as the other test)

This is already handled correctly by the inliner, i.e., we don't inline this

Change-Id: I193cec06655c64e72b5b1b29c29d636b7c1a7ad2
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress199142666.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress199142666.java
index 1b31ea7..e92f84a 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress199142666.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress199142666.java
@@ -37,44 +37,43 @@
     return transformer(VirtualA.class).setClassDescriptor(descriptor(StaticA.class)).transform();
   }
 
-  private byte[] getStaticAAsVirtualA() throws IOException {
-    return transformer(StaticA.class).setClassDescriptor(descriptor(VirtualA.class)).transform();
-  }
-
   @Test
-  public void testInliningWhenInvalidTarget() throws Exception {
+  public void testInliningWhenInvalidCaller() throws Exception {
     R8TestRunResult run =
         testForR8(parameters.getBackend())
-            .addProgramClasses(B.class)
+            .addProgramClasses(HasInvalidStaticCall.class)
             .addProgramClassFileData(getVirtualAAsStaticA())
-            .addKeepMainRule(B.class)
+            .addKeepMainRule(HasInvalidStaticCall.class)
             .addKeepMethodRules(StaticA.class, "void foo()")
             .setMinApi(parameters.getApiLevel())
-            .run(parameters.getRuntime(), B.class);
+            .run(parameters.getRuntime(), HasInvalidStaticCall.class);
     if (parameters.getRuntime().asDex().getVm().getVersion().isDalvik()) {
       // TODO(b/199142666): We should not inline to provoke this error.
       run.assertFailureWithErrorThatMatches(
           containsString("invoke type does not match method type of"));
     } else {
+      // TODO(b/199142666): We should consider if we want to inline in this case (there are no
+      // verification errors)
       run.assertSuccessWithOutputLines("foochanged")
-          .inspect(inspector -> ensureThisNumberOfCalls(inspector, B.class));
+          .inspect(inspector -> ensureThisNumberOfCalls(inspector, HasInvalidStaticCall.class, 2));
     }
   }
 
   @Test
-  public void testInliningWhenInvalidCaller() throws Exception {
+  public void testInliningWhenInvalidTarget() throws Exception {
     testForR8(parameters.getBackend())
-        .addProgramClasses(C.class)
-        .addProgramClassFileData(getStaticAAsVirtualA())
-        .addKeepMainRule(C.class)
-        .addKeepMethodRules(VirtualA.class, "static void foo()")
+        .addProgramClasses(TargetHasInvalidStaticCall.class, CallsStaticFoo.class)
+        .addProgramClassFileData(getVirtualAAsStaticA())
+        .addKeepMainRule(TargetHasInvalidStaticCall.class)
+        .addKeepMethodRules(StaticA.class, "void foo()")
         .setMinApi(parameters.getApiLevel())
-        .run(parameters.getRuntime(), C.class)
-        .assertSuccessWithOutputLines("foo")
-        .inspect(inspector -> ensureThisNumberOfCalls(inspector, C.class));
+        .run(parameters.getRuntime(), TargetHasInvalidStaticCall.class)
+        .assertSuccessWithEmptyOutput()
+        .inspect(
+            inspector -> ensureThisNumberOfCalls(inspector, TargetHasInvalidStaticCall.class, 1));
   }
 
-  private void ensureThisNumberOfCalls(CodeInspector inspector, Class clazz) {
+  private void ensureThisNumberOfCalls(CodeInspector inspector, Class clazz, int fooCalls) {
     long count =
         inspector
             .clazz(clazz)
@@ -83,8 +82,7 @@
             .filter(InstructionSubject::isInvoke)
             .filter(invoke -> invoke.getMethod().name.toString().equals("foo"))
             .count();
-    // TODO(b/199142666): We should not inline, so count should be 1.
-    assertEquals(2, count);
+    assertEquals(fooCalls, count);
   }
 
   static class StaticA {
@@ -107,7 +105,13 @@
     }
   }
 
-  static class B {
+  static class CallsStaticFoo {
+    public static void callStaticFoo() {
+      StaticA.foo();
+    }
+  }
+
+  static class HasInvalidStaticCall {
     public static void main(String[] args) {
       StaticA.callFoo();
       try {
@@ -120,11 +124,19 @@
     }
   }
 
-  static class C {
+  static class TargetHasInvalidStaticCall {
     public static void main(String[] args) {
-      VirtualA.callFoo();
+      boolean didThrow = false;
       try {
-        new VirtualA().foo();
+        CallsStaticFoo.callStaticFoo();
+      } catch (IncompatibleClassChangeError e) {
+        didThrow = true;
+      }
+      if (!didThrow) {
+        throw new RuntimeException("Should have thrown ICCE");
+      }
+      try {
+        StaticA.foo();
       } catch (IncompatibleClassChangeError e) {
         return;
       }