Remove internal options flag emitLambdaMethodAnnotations

This is enabled by default in debug mode, so no need for a
system property to set it either.

Fixes: b/458640215
Change-Id: I68972f59dacf671b2ea6bf16b0ad956928988c83
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index 9210491..3ab95df 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -800,11 +800,6 @@
     internal.setSyntheticInfoConsumer(syntheticInfoConsumer);
     internal.desugarGraphConsumer = desugarGraphConsumer;
     internal.mainDexKeepRules = mainDexKeepRules;
-    internal.emitLambdaMethodAnnotations =
-        !internal.disableLambdaMethodAnnotations
-            && (internal.emitLambdaMethodAnnotations
-                || (internal.debug
-                    && (!internal.intermediate || internal.hasGlobalSyntheticsConsumer())));
     InternalMapConsumer mapConsumer =
         wrapExistingInternalMapConsumerIfNotNull(
             internal.mapConsumer, partitionMapConsumer, MapConsumerToPartitionMapConsumer::new);
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index f2d2fd9..5e84983 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -101,7 +101,8 @@
             options.enableStringSwitchConversion = false;
             assert !options.enableVarHandleDesugaring;
             options.enableVarHandleDesugaring = true;
-            assert !options.emitLambdaMethodAnnotations;
+            assert !options.disableLambdaMethodAnnotations;
+            options.disableLambdaMethodAnnotations = true;
             options.tool = Tool.L8;
 
             desugar(app, options, executorService);
@@ -109,6 +110,7 @@
             options.enableSwitchRewriting = true;
             options.enableStringSwitchConversion = true;
             options.enableVarHandleDesugaring = false;
+            options.disableLambdaMethodAnnotations = false;
           });
       if (shrink) {
         R8.run(r8Command, executorService);
diff --git a/src/main/java/com/android/tools/r8/R8Partial.java b/src/main/java/com/android/tools/r8/R8Partial.java
index ff73fd4..49aa5c7 100644
--- a/src/main/java/com/android/tools/r8/R8Partial.java
+++ b/src/main/java/com/android/tools/r8/R8Partial.java
@@ -345,7 +345,6 @@
         options.emitPermittedSubclassesAnnotationsInDex;
     subCompilationOptions.desugarState = options.desugarState;
     subCompilationOptions.forceNestDesugaring = options.forceNestDesugaring;
-    subCompilationOptions.emitLambdaMethodAnnotations = options.emitLambdaMethodAnnotations;
     subCompilationOptions.disableLambdaMethodAnnotations = options.disableLambdaMethodAnnotations;
     subCompilationOptions.getTestingOptions().forceDexContainerFormat =
         options.getTestingOptions().forceDexContainerFormat;
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
index 33f0ea7..d152f32 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
@@ -321,7 +321,8 @@
   }
 
   public static boolean isEmitLambdaMethodAnnotations(InternalOptions options) {
-    return options.emitLambdaMethodAnnotations;
+    return !options.disableLambdaMethodAnnotations
+        && (options.debug && (!options.intermediate || options.hasGlobalSyntheticsConsumer()));
   }
 
   private void synthesizeAnnotations(SyntheticProgramClassBuilder builder) {
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index c5e9005..4f8fcb0 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -568,10 +568,6 @@
   public boolean emitPermittedSubclassesAnnotationsInDex =
       System.getProperty("com.android.tools.r8.emitPermittedSubclassesAnnotationsInDex") != null;
 
-  // TODO(b/458640215): Remove setting this flag through a system property now it is enabled by
-  //  default in debug mode.
-  public boolean emitLambdaMethodAnnotations =
-      System.getProperty("com.android.tools.r8.emitLambdaMethodAnnotations") != null;
   // TODO(b/464478094): Flag to disable generation of LambdaMethod annotations.
   public boolean disableLambdaMethodAnnotations =
       System.getProperty("com.android.tools.r8.disableLambdaMethodAnnotations") != null;
diff --git a/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java b/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java
index 0d2c99b..9cff772 100644
--- a/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java
+++ b/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java
@@ -10,6 +10,7 @@
 import com.android.tools.r8.D8TestCompileResult;
 import com.android.tools.r8.Disassemble;
 import com.android.tools.r8.Disassemble.DisassembleCommand;
+import com.android.tools.r8.GlobalSyntheticsTestingConsumer;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.ToolHelper;
@@ -118,7 +119,6 @@
     testForD8()
         .addProgramClassesAndInnerClasses(CLASS)
         .setMinApi(parameters)
-        .addOptionsModification(options -> options.emitLambdaMethodAnnotations = false)
         .compile()
         .assertNoMessages()
         .writeToZip(out1)
@@ -131,6 +131,7 @@
 
     int i = 0;
     List<Path> outs = new ArrayList<>();
+    List<GlobalSyntheticsTestingConsumer> globals = new ArrayList<>();
     {
       Path mainOut = outPerClassDir.resolve("class" + i++ + ".zip");
       outs.add(mainOut);
@@ -145,12 +146,16 @@
     }
     for (Path innerClass : innerClasses) {
       Path out = outPerClassDir.resolve("class" + i++ + ".zip");
+      GlobalSyntheticsTestingConsumer global = new GlobalSyntheticsTestingConsumer();
+
       outs.add(out);
+      globals.add(global);
       testForD8()
           .addProgramFiles(innerClass)
           .addClasspathFiles(ToolHelper.getClassPathForTests())
           .setIntermediate(true)
           .setMinApi(parameters)
+          .apply(b -> b.getBuilder().setGlobalSyntheticsConsumer(global))
           .compile()
           .assertNoMessages()
           .writeToZip(out);
@@ -158,7 +163,14 @@
 
     Path out2 = temp.newFolder().toPath().resolve("out2.zip");
     D8TestCompileResult compiledResult =
-        testForD8().addProgramFiles(outs).setMinApi(parameters).compile();
+        testForD8()
+            .addProgramFiles(outs)
+            .apply(
+                b ->
+                    globals.forEach(
+                        g -> b.getBuilder().addGlobalSyntheticsResourceProviders(g.getProviders())))
+            .setMinApi(parameters)
+            .compile();
 
     compiledResult
         .assertNoMessages()
diff --git a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaStaticInstanceFieldDuplicationTest.java b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaStaticInstanceFieldDuplicationTest.java
index aa562e1..ce32fb8 100644
--- a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaStaticInstanceFieldDuplicationTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaStaticInstanceFieldDuplicationTest.java
@@ -121,7 +121,7 @@
                 !intermediate,
                 b ->
                     b.addOptionsModification(
-                        options -> options.emitLambdaMethodAnnotations = false))
+                        options -> options.disableLambdaMethodAnnotations = true))
             .compile()
             .writeToZip();
 
@@ -137,7 +137,7 @@
                 !intermediate,
                 b ->
                     b.addOptionsModification(
-                        options -> options.emitLambdaMethodAnnotations = false))
+                        options -> options.disableLambdaMethodAnnotations = true))
             .compile()
             .writeToZip();
 
diff --git a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaToSysOutPrintlnDuplicationTest.java b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaToSysOutPrintlnDuplicationTest.java
index a3e6f7d..6642623 100644
--- a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaToSysOutPrintlnDuplicationTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaToSysOutPrintlnDuplicationTest.java
@@ -118,7 +118,7 @@
                 !intermediate,
                 b ->
                     b.addOptionsModification(
-                        options -> options.emitLambdaMethodAnnotations = false))
+                        options -> options.disableLambdaMethodAnnotations = true))
             .compile()
             .writeToZip();
 
@@ -134,7 +134,7 @@
                 !intermediate,
                 b ->
                     b.addOptionsModification(
-                        options -> options.emitLambdaMethodAnnotations = false))
+                        options -> options.disableLambdaMethodAnnotations = true))
             .compile()
             .writeToZip();
 
diff --git a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticGeneratorAGPUseTest.java b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticGeneratorAGPUseTest.java
index e03c6b3..cc49170 100644
--- a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticGeneratorAGPUseTest.java
+++ b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticGeneratorAGPUseTest.java
@@ -6,7 +6,6 @@
 import static com.android.tools.r8.ToolHelper.getAndroidJar;
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertNull;
 
 import com.android.tools.r8.D8;
 import com.android.tools.r8.D8Command;
@@ -15,10 +14,10 @@
 import com.android.tools.r8.OutputMode;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.utils.internal.BooleanUtils;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import java.nio.file.Path;
-import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -31,47 +30,36 @@
   @Parameter(0)
   public TestParameters parameters;
 
-  @Parameter(1)
-  public boolean emitLambdaMethodAnnotations;
-
-  @Parameters(name = "{0}, emitLambdaMethodAnnotations = {1}")
-  public static List<Object[]> data() {
-    return buildParameters(getTestParameters().withNoneRuntime().build(), BooleanUtils.values());
+  @Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters().withNoneRuntime().build();
   }
 
   @Test
   public void test() throws Exception {
-    try {
-      if (emitLambdaMethodAnnotations) {
-        assertNull(System.getProperty("com.android.tools.r8.emitLambdaMethodAnnotations"));
-        System.setProperty("com.android.tools.r8.emitLambdaMethodAnnotations", "");
-      }
-      Path globals = temp.newFile("all.globals").toPath();
-      GlobalSyntheticsGenerator.run(
-          GlobalSyntheticsGeneratorCommand.builder()
-              .addLibraryFiles(getAndroidJar(36))
-              .setGlobalSyntheticsOutput(globals)
-              .build());
+    Path globals = temp.newFile("all.globals").toPath();
+    GlobalSyntheticsGenerator.run(
+        GlobalSyntheticsGeneratorCommand.builder()
+            .addLibraryFiles(getAndroidJar(AndroidApiLevel.LATEST))
+            .setGlobalSyntheticsOutput(globals)
+            .build());
 
-      Path globalsDex = temp.newFile("globals.zip").toPath();
-      D8.run(
-          D8Command.builder()
-              .addLibraryFiles(getAndroidJar(36))
-              .setMinApiLevel(21)
-              .addGlobalSyntheticsFiles(globals)
-              .setOutput(globalsDex, OutputMode.DexIndexed)
-              .build());
+    Path globalsDex = temp.newFile("globals.zip").toPath();
+    D8.run(
+        D8Command.builder()
+            .addLibraryFiles(getAndroidJar(AndroidApiLevel.LATEST))
+            .setMinApiLevel(21)
+            .addGlobalSyntheticsFiles(globals)
+            .setOutput(globalsDex, OutputMode.DexIndexed)
+            .build());
 
-      CodeInspector inspector = new CodeInspector(globalsDex);
-      assertThat(inspector.clazz("java.lang.Record"), isPresent());
-      // Added in API level 24.
-      assertThat(inspector.clazz("android.os.HardwarePropertiesManager"), isPresent());
-      // Added in API level 36.
-      assertThat(inspector.clazz("android.os.Build$VERSION_CODES_FULL"), isPresent());
-      // Class com.android.tools.r8.annotations.LambdaMethod is always generated.
-      assertThat(inspector.clazz("com.android.tools.r8.annotations.LambdaMethod"), isPresent());
-    } finally {
-      System.clearProperty("com.android.tools.r8.emitLambdaMethodAnnotations");
-    }
+    CodeInspector inspector = new CodeInspector(globalsDex);
+    assertThat(inspector.clazz("java.lang.Record"), isPresent());
+    // Added in API level 24.
+    assertThat(inspector.clazz("android.os.HardwarePropertiesManager"), isPresent());
+    // Added in API level 36.
+    assertThat(inspector.clazz("android.os.Build$VERSION_CODES_FULL"), isPresent());
+    // Class com.android.tools.r8.annotations.LambdaMethod is always generated.
+    assertThat(inspector.clazz("com.android.tools.r8.annotations.LambdaMethod"), isPresent());
   }
 }