Only keep kotlin metadata for classified lambdas

Change-Id: I6f7a75dd9432d5f13f6e1b5746c6199d9fa54461
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
index 0e02914..6b011a6 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
@@ -5,6 +5,7 @@
 
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.INVALID_KOTLIN_INFO;
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.NO_KOTLIN_INFO;
+import static com.android.tools.r8.kotlin.KotlinSyntheticClassInfo.getFlavour;
 
 import com.android.tools.r8.graph.DexAnnotation;
 import com.android.tools.r8.graph.DexAnnotationElement;
@@ -16,6 +17,7 @@
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexValue;
 import com.android.tools.r8.graph.DexValue.DexValueArray;
+import com.android.tools.r8.kotlin.KotlinSyntheticClassInfo.Flavour;
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.StringDiagnostic;
 import java.util.IdentityHashMap;
@@ -52,7 +54,7 @@
       DexAnnotation annotation) {
     try {
       KotlinClassMetadata kMetadata = toKotlinClassMetadata(kotlin, annotation.annotation);
-      if (onlyProcessLambda && !isSyntheticLambda(kMetadata)) {
+      if (onlyProcessLambda && !isSyntheticClassifiedLambda(kotlin, clazz, kMetadata)) {
         return NO_KOTLIN_INFO;
       }
       return createKotlinInfo(kotlin, clazz, kMetadata, factory, reporter, keepByteCode);
@@ -75,10 +77,12 @@
     }
   }
 
-  private static boolean isSyntheticLambda(KotlinClassMetadata kMetadata) {
+  private static boolean isSyntheticClassifiedLambda(
+      Kotlin kotlin, DexClass clazz, KotlinClassMetadata kMetadata) {
     if (kMetadata instanceof SyntheticClass) {
       SyntheticClass syntheticClass = (SyntheticClass) kMetadata;
-      return syntheticClass.isLambda();
+      return syntheticClass.isLambda()
+          && getFlavour(syntheticClass, clazz, kotlin) != Flavour.Unclassified;
     }
     return false;
   }
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
index 41147a5..36bf5cf 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
@@ -110,7 +110,7 @@
     return metadataVersion;
   }
 
-  private static Flavour getFlavour(
+  public static Flavour getFlavour(
       KotlinClassMetadata.SyntheticClass metadata, DexClass clazz, Kotlin kotlin) {
     // Returns KotlinStyleLambda if the given clazz is a Kotlin-style lambda:
     //   a class that