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());
}
}