Verify vertically merged types are pruned by tree shaking

Bug: 131114814
Change-Id: Iab741de15b18784c18e07d6d4aa90ac12105ed49
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 1649c0d..2924ba8 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -627,6 +627,9 @@
                         application,
                         CollectionUtils.mergeSets(prunedTypes, pruner.getRemovedClasses())));
 
+            assert appView.verticallyMergedClasses() == null
+                || appView.verticallyMergedClasses().verifyAllSourcesPruned(appViewWithLiveness);
+
             processWhyAreYouKeepingAndCheckDiscarded(
                 appView.rootSet(),
                 () -> appView.appInfo().app().classesWithDeterministicOrder(),
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 e470a9b..2d3a09f 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -115,6 +115,15 @@
     public boolean hasBeenMergedIntoSubtype(DexType type) {
       return mergedClasses.containsKey(type);
     }
+
+    public boolean verifyAllSourcesPruned(AppView<AppInfoWithLiveness> appView) {
+      for (List<DexType> sourcesForTarget : sources.values()) {
+        for (DexType source : sourcesForTarget) {
+          assert appView.appInfo().wasPruned(source);
+        }
+      }
+      return true;
+    }
   }
 
   private enum AbortReason {