Add assertion for only keeping kotlin metadata for kept classes

Change-Id: I534dc7695d65339f0aeeda6bc0c55d4543a66f4b
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
index d709ea4..e238dd6 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
@@ -11,11 +11,13 @@
 import com.android.tools.r8.graph.DexAnnotationElement;
 import com.android.tools.r8.graph.DexEncodedAnnotation;
 import com.android.tools.r8.graph.DexItemFactory;
+import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexValue;
 import com.android.tools.r8.graph.DexValue.DexValueArray;
 import com.android.tools.r8.graph.DexValue.DexValueInt;
 import com.android.tools.r8.graph.DexValue.DexValueString;
 import com.android.tools.r8.naming.NamingLens;
+import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.ThreadUtils;
 import java.util.ArrayList;
 import java.util.List;
@@ -77,6 +79,19 @@
           }
         },
         executorService);
+    assert verifyMetadataOnlyPresentOnKeptClasses();
+  }
+
+  private boolean verifyMetadataOnlyPresentOnKeptClasses() {
+    if (!appView.appInfo().hasLiveness()) {
+      return true;
+    }
+    AppInfoWithLiveness appInfoWithLiveness = appView.withLiveness().appInfo();
+    for (DexProgramClass clazz : appView.appInfo().classes()) {
+      DexAnnotation meta = clazz.annotations().getFirstMatching(factory.kotlinMetadataType);
+      assert meta == null || appInfoWithLiveness.isPinned(clazz.type);
+    }
+    return true;
   }
 
   private DexAnnotation createKotlinMetadataAnnotation(