Don't add lambdas from features into lambda groups

Bug: 148525512
Bug: 149369974
Change-Id: Id23f7982e14f71abca8fbfcc47775318cdfe8704
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
index 8fee6c5..a5e9d5c4 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
@@ -234,7 +234,9 @@
                 cls.hasKotlinInfo()
                     && cls.getKotlinInfo().isSyntheticClass()
                     && cls.getKotlinInfo().asSyntheticClass().isLambda()
-                    && KotlinLambdaGroupIdFactory.hasValidAnnotations(kotlin, cls))
+                    && KotlinLambdaGroupIdFactory.hasValidAnnotations(kotlin, cls)
+                    && (appView.options().featureSplitConfiguration == null
+                        || !appView.options().featureSplitConfiguration.isInFeature(cls)))
         .sorted((a, b) -> a.type.slowCompareTo(b.type)) // Ensure stable ordering.
         .forEachOrdered(
             lambda -> {
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java b/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java
index 405d65c..a06dcf8 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java
@@ -7,6 +7,7 @@
 import static com.android.tools.r8.KotlinCompilerTool.KOTLINC;
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
 import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.MatcherAssert.assertThat;
 
@@ -15,7 +16,6 @@
 import com.android.tools.r8.R8TestCompileResult;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.ToolHelper.DexVm.Version;
 import com.android.tools.r8.ToolHelper.KotlinTargetVersion;
 import com.android.tools.r8.utils.ArchiveResourceProvider;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -102,16 +102,15 @@
                 instruction ->
                     instruction.asCheckCast().getType().toSourceString().contains("Base"))
             .count());
-    // TODO(b/148525512): The lambda group has 2 captures which capture "Feature".
-    assertEquals(
-        2,
+    // The lambda group has no captures which capture "Feature" (lambdas in the feature are not
+    // in this lambda group).
+    assertTrue(
         invokeMethod
             .streamInstructions()
             .filter(InstructionSubject::isCheckCast)
-            .filter(
+            .noneMatch(
                 instruction ->
-                    instruction.asCheckCast().getType().toSourceString().contains("Feature"))
-            .count());
+                    instruction.asCheckCast().getType().toSourceString().contains("Feature")));
   }
 
   @Test
@@ -142,12 +141,6 @@
                 equalTo("Resource 'META-INF/MANIFEST.MF' already exists."))
             .inspect(this::checkLambdaGroups);
 
-    // TODO(b/148525512): Fails on 7.0.0 and 8.1.0.
-    if (parameters.getRuntime().asDex().getVm().getVersion() == Version.V7_0_0
-        || parameters.getRuntime().asDex().getVm().getVersion() == Version.V8_1_0) {
-      return;
-    }
-
     // Run the code without the feature code present.
     compileResult
         .run(parameters.getRuntime(), baseKtClassName)