Update tests after enabling StringBuilder outlining

Change-Id: Icaf1585037185aa500bdb5813a287a61ccbf9864
diff --git a/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
index 9686456..8d0d237 100644
--- a/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
+++ b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
@@ -5,6 +5,7 @@
 
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.core.AnyOf.anyOf;
+import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.D8TestBuilder;
 import com.android.tools.r8.D8TestCompileResult;
@@ -78,6 +79,11 @@
       throws Exception {
     return testForD8()
         .addProgramFiles(base.resolve(DEPLOY_JAR))
+        .addOptionsModification(
+            options -> {
+              assertTrue(options.getThrowBlockOutlinerOptions().enable);
+              options.getThrowBlockOutlinerOptions().enable = false;
+            })
         .setMinApi(parameters)
         .apply(configuration)
         .compile();
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java
index b02f228..cdb615d 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java
@@ -15,6 +15,7 @@
 import com.android.tools.r8.references.ClassReference;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.StringUtils;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -84,6 +85,7 @@
         .addHorizontallyMergedClassesInspector(
             inspector -> {
               if (parameters.isDexRuntime()
+                  && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.L)
                   && kotlinParameters.getLambdaGeneration().isInvokeDynamic()) {
                 inspector
                     .assertIsCompleteMergeGroup(
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialJavaStyleTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialJavaStyleTest.java
index ca2d90c..84575f1 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialJavaStyleTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialJavaStyleTest.java
@@ -5,7 +5,7 @@
 package com.android.tools.r8.kotlin.lambda;
 
 import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_5_0;
-import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_9_21;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_2_0_20;
 import static com.android.tools.r8.utils.PredicateUtils.not;
 import static junit.framework.TestCase.assertEquals;
 import static org.junit.Assume.assumeFalse;
@@ -18,6 +18,7 @@
 import com.android.tools.r8.references.ClassReference;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.StringUtils;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -98,110 +99,84 @@
 
   private void inspect(
       HorizontallyMergedClassesInspector inspector, KotlinLambdasInInput lambdasInInput) {
-    if (hasKotlinCGeneratedLambdaClasses()
-        && kotlinParameters.getCompilerVersion().isLessThan(KOTLINC_1_5_0)) {
-      // Don't check exactly how J-style Kotlin lambdas are merged for kotlinc before 1.5.0.
-      assertEquals(
-          parameters.isDexRuntime() && parameters.canUseDefaultAndStaticInterfaceMethods() ? 3 : 10,
-          inspector.getMergeGroups().size());
-      return;
-    }
-
-    if (!allowAccessModification && hasKotlinCGeneratedLambdaClasses()) {
-      // Only a subset of all J-style Kotlin lambdas are merged without -allowaccessmodification.
-      Set<ClassReference> unmergedLambdas =
-          ImmutableSet.of(
-              lambdasInInput.getJStyleLambdaReferenceFromTypeName(
-                  getTestName(), "inner.InnerKt$testInner1$1"),
-              lambdasInInput.getJStyleLambdaReferenceFromTypeName(
-                  getTestName(), "inner.InnerKt$testInner1$2"),
-              lambdasInInput.getJStyleLambdaReferenceFromTypeName(
-                  getTestName(), "inner.InnerKt$testInner1$3"),
-              lambdasInInput.getJStyleLambdaReferenceFromTypeName(
-                  getTestName(), "inner.InnerKt$testInner1$4"),
-              lambdasInInput.getJStyleLambdaReferenceFromTypeName(
-                  getTestName(), "inner.InnerKt$testInner1$5"));
-      inspector
-          .assertIsCompleteMergeGroup(
-              lambdasInInput.getJStyleLambdas().stream()
-                  .filter(not(unmergedLambdas::contains))
-                  .collect(Collectors.toList()))
-          .assertClassReferencesNotMerged(unmergedLambdas);
+    if (kotlinParameters.getCompilerVersion().isLessThan(KOTLINC_2_0_20)) {
+      // Don't inspect the output for Kotlin 1.9 and older.
       return;
     }
 
     if (hasKotlinCGeneratedLambdaClasses()) {
-      // All J-style Kotlin lambdas are merged with -allowaccessmodification or because they are
-      // generated by R8.
-      inspector.assertIsCompleteMergeGroup(lambdasInInput.getJStyleLambdas());
-      return;
-    }
-
-    ClassReference mainClassReference = Reference.classFromTypeName(getTestName() + ".MainKt");
-    ClassReference innerClassReference =
-        Reference.classFromTypeName(getTestName() + ".inner.InnerKt");
-    if (parameters.isCfRuntime()) {
-      inspector.assertClassReferencesNotMerged(
-          SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 0),
-          SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 1),
-          SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 2),
-          SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 3));
-      for (int id = 0; id < 30; id++) {
-        inspector.assertClassReferencesNotMerged(
-            SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, id));
+      if (allowAccessModification) {
+        // All J-style Kotlin lambdas are merged with -allowaccessmodification or because they are
+        // generated by R8.
+        inspector.assertIsCompleteMergeGroup(lambdasInInput.getJStyleLambdas());
+      } else {
+        // Only a subset of all J-style Kotlin lambdas are merged without -allowaccessmodification.
+        Set<ClassReference> unmergedLambdas =
+            ImmutableSet.of(
+                lambdasInInput.getJStyleLambdaReferenceFromTypeName(
+                    getTestName(), "inner.InnerKt$testInner1$1"),
+                lambdasInInput.getJStyleLambdaReferenceFromTypeName(
+                    getTestName(), "inner.InnerKt$testInner1$2"),
+                lambdasInInput.getJStyleLambdaReferenceFromTypeName(
+                    getTestName(), "inner.InnerKt$testInner1$3"),
+                lambdasInInput.getJStyleLambdaReferenceFromTypeName(
+                    getTestName(), "inner.InnerKt$testInner1$4"),
+                lambdasInInput.getJStyleLambdaReferenceFromTypeName(
+                    getTestName(), "inner.InnerKt$testInner1$5"));
+        inspector
+            .assertIsCompleteMergeGroup(
+                lambdasInInput.getJStyleLambdas().stream()
+                    .filter(not(unmergedLambdas::contains))
+                    .collect(Collectors.toList()))
+            .assertClassReferencesNotMerged(unmergedLambdas);
       }
-    } else if (parameters.canUseDefaultAndStaticInterfaceMethods()) {
-      inspector
-          .applyIf(
-              kotlinc.getCompilerVersion().isLessThanOrEqualTo(KOTLINC_1_9_21),
-              i -> {
-                i.assertIsCompleteMergeGroup(
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 0),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 1))
-                    .assertIsCompleteMergeGroup(
-                        SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 0),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 2),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 3))
-                    .assertIsCompleteMergeGroup(
-                        SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 1),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 4),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 5));
-                for (int id = 6; id < 30; id++) {
-                  inspector.assertClassReferencesNotMerged(
-                      SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, id));
-                }
-              },
-              i -> {
-                i.assertIsCompleteMergeGroup(
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 3),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 4),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 0))
-                    .assertIsCompleteMergeGroup(
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 7),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 8),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 2))
-                    .assertIsCompleteMergeGroup(
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 5),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 6),
-                        SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 1))
-                    .assertIsCompleteMergeGroup(
-                        SyntheticItemsTestUtils.syntheticThrowBlockOutlineClass(
-                            mainClassReference, 0),
-                        SyntheticItemsTestUtils.syntheticThrowBlockOutlineClass(
-                            mainClassReference, 1),
-                        SyntheticItemsTestUtils.syntheticThrowBlockOutlineClass(
-                            mainClassReference, 2));
-                for (int id = 4; id < 30; id++) {
-                  inspector.assertClassReferencesNotMerged(
-                      SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, id));
-                }
-              })
-          .assertClassReferencesNotMerged(
-              SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 2),
-              SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 3));
     } else {
-      assertEquals(10, inspector.getMergeGroups().size());
-      assertEquals(34, inspector.getSources().size());
+      ClassReference mainClassReference = Reference.classFromTypeName(getTestName() + ".MainKt");
+      ClassReference innerClassReference =
+          Reference.classFromTypeName(getTestName() + ".inner.InnerKt");
+      if (parameters.isCfRuntime()) {
+        inspector.assertClassReferencesNotMerged(
+            SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 0),
+            SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 1),
+            SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 2),
+            SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 3));
+        for (int id = 0; id < 30; id++) {
+          inspector.assertClassReferencesNotMerged(
+              SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, id));
+        }
+      } else if (parameters.canUseDefaultAndStaticInterfaceMethods()) {
+        inspector
+            .assertIsCompleteMergeGroup(
+                SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 3),
+                SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 4),
+                SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 0))
+            .assertIsCompleteMergeGroup(
+                SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 7),
+                SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 8),
+                SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 2))
+            .assertIsCompleteMergeGroup(
+                SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 5),
+                SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, 6),
+                SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 1))
+            .assertIsCompleteMergeGroup(
+                SyntheticItemsTestUtils.syntheticThrowBlockOutlineClass(mainClassReference, 0),
+                SyntheticItemsTestUtils.syntheticThrowBlockOutlineClass(mainClassReference, 1),
+                SyntheticItemsTestUtils.syntheticThrowBlockOutlineClass(mainClassReference, 2));
+        for (int id = 4; id < 30; id++) {
+          inspector.assertClassReferencesNotMerged(
+              SyntheticItemsTestUtils.syntheticLambdaClass(mainClassReference, id));
+        }
+        inspector.assertClassReferencesNotMerged(
+            SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 2),
+            SyntheticItemsTestUtils.syntheticLambdaClass(innerClassReference, 3));
+      } else {
+        assertEquals(10, inspector.getMergeGroups().size());
+        assertEquals(
+            parameters.isDexRuntime() && parameters.getApiLevel().isLessThan(AndroidApiLevel.L)
+                ? 28
+                : 34,
+            inspector.getSources().size());
+      }
     }
   }