Fix IllegalAccessError from vertical class merging

Fixes: b/309727365
Change-Id: If6f4af7f27d93c8145e893d8ac0ab614272a9792
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 2397d02..9baa032 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -465,6 +465,12 @@
     if (!target.isPublic()) {
       return true;
     }
+    for (DexType sourceInterface : source.getInterfaces()) {
+      DexClass sourceInterfaceClass = appView.definitionFor(sourceInterface);
+      if (sourceInterfaceClass != null && !sourceInterfaceClass.isPublic()) {
+        return true;
+      }
+    }
     for (DexEncodedField field : source.fields()) {
       if (!(field.isPublic() || field.isPrivate())) {
         return true;
diff --git a/src/test/java/com/android/tools/r8/classmerging/vertical/InterfaceAccessibleAfterVerticalClassMergingTest.java b/src/test/java/com/android/tools/r8/classmerging/vertical/InterfaceAccessibleAfterVerticalClassMergingTest.java
index 0eda102..990e2d2 100644
--- a/src/test/java/com/android/tools/r8/classmerging/vertical/InterfaceAccessibleAfterVerticalClassMergingTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/vertical/InterfaceAccessibleAfterVerticalClassMergingTest.java
@@ -8,6 +8,7 @@
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.classmerging.vertical.testclasses.InterfaceAccessibleAfterVerticalClassMergingTestClasses;
 import com.android.tools.r8.classmerging.vertical.testclasses.InterfaceAccessibleAfterVerticalClassMergingTestClasses.A;
+import com.android.tools.r8.utils.codeinspector.VerticallyMergedClassesInspector;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -31,17 +32,13 @@
         .addInnerClasses(getClass(), InterfaceAccessibleAfterVerticalClassMergingTestClasses.class)
         .addKeepMainRule(Main.class)
         .addVerticallyMergedClassesInspector(
-            inspector -> inspector.assertMergedIntoSubtype(A.class))
+            VerticallyMergedClassesInspector::assertNoClassesMerged)
         .enableNoUnusedInterfaceRemovalAnnotations()
         .enableNoVerticalClassMergingAnnotations()
         .setMinApi(parameters)
         .compile()
         .run(parameters.getRuntime(), Main.class)
-        // TODO(b/309727365): Should succeed.
-        .assertFailureWithErrorThatThrows(
-            parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isDalvik()
-                ? NoClassDefFoundError.class
-                : IllegalAccessError.class);
+        .assertSuccessWithOutputLines("B");
   }
 
   static class Main {