Avoid merging lambda-instantiated interfaces

Change-Id: I6826b4f77dda8441b68e3bc10e9f63afa3e18741
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 24433cc..eeaa9f3 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -256,6 +256,7 @@
 
   private boolean isMergeCandidate(DexProgramClass clazz, Set<DexType> pinnedTypes) {
     if (appInfo.instantiatedTypes.contains(clazz.type)
+        || appInfo.instantiatedLambdas.contains(clazz.type)
         || appInfo.isPinned(clazz.type)
         || pinnedTypes.contains(clazz.type)) {
       return false;
diff --git a/src/test/examplesAndroidO/classmerging/LambdaRewritingTest.java b/src/test/examplesAndroidO/classmerging/LambdaRewritingTest.java
index 79e98d1..8357eee 100644
--- a/src/test/examplesAndroidO/classmerging/LambdaRewritingTest.java
+++ b/src/test/examplesAndroidO/classmerging/LambdaRewritingTest.java
@@ -17,11 +17,20 @@
     f.accept();
   }
 
+  // Must not be merged into FunctionImpl as it is instantiated by a lambda.
   public interface Function {
 
     void accept();
   }
 
+  public static class FunctionImpl implements Function {
+
+    @Override
+    public void accept() {
+      System.out.println("In FunctionImpl.accept()");
+    }
+  }
+
   // Will be merged into InterfaceImpl.
   public interface Interface {
 
diff --git a/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java b/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java
index 7e0aa48..8f98fd3 100644
--- a/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java
@@ -121,6 +121,7 @@
         new Path[] {
           JAVA8_CF_DIR.resolve("LambdaRewritingTest.class"),
           JAVA8_CF_DIR.resolve("LambdaRewritingTest$Function.class"),
+          JAVA8_CF_DIR.resolve("LambdaRewritingTest$FunctionImpl.class"),
           JAVA8_CF_DIR.resolve("LambdaRewritingTest$Interface.class"),
           JAVA8_CF_DIR.resolve("LambdaRewritingTest$InterfaceImpl.class")
         };