Revert "Generate com.android.tools.r8.annotations.LambdaMethod in debug mode"
This reverts commit 33e28a5436d27c306e0515c3ebd71616050da7bb.
Reason for revert: Breaks L8 desugar tests
Bug: b/417709154
Change-Id: I9a62338bdc085ac6b2710e2ac2b7eaab2b0198e9
diff --git a/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorVerifier.java b/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorVerifier.java
index 0e6c73a..e2a7197 100644
--- a/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorVerifier.java
+++ b/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorVerifier.java
@@ -6,7 +6,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.ir.desugar.LambdaClass;
import com.android.tools.r8.utils.InternalOptions;
import java.util.function.Consumer;
@@ -18,7 +17,7 @@
consumer.accept(dexItemFactory.methodHandlesLookupType);
consumer.accept(dexItemFactory.recordType);
consumer.accept(dexItemFactory.varHandleType);
- if (LambdaClass.isEmitLambdaMethodAnnotations(options)) {
+ if (options.emitLambdaMethodAnnotations) {
consumer.accept(dexItemFactory.lambdaMethodAnnotation);
}
}
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 3f795a8..5734a3e 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
@@ -42,7 +42,6 @@
import com.android.tools.r8.ir.desugar.lambda.LambdaInstructionDesugaring.DesugarInvoke;
import com.android.tools.r8.ir.desugar.lambda.SyntheticLambdaAccessorMethodConsumer;
import com.android.tools.r8.synthesis.SyntheticProgramClassBuilder;
-import com.android.tools.r8.utils.InternalOptions;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.Collection;
@@ -256,13 +255,8 @@
builder.setInstanceFields(fields);
}
- public static boolean isEmitLambdaMethodAnnotations(InternalOptions options) {
- return options.emitLambdaMethodAnnotations
- || (options.debug && (!options.intermediate || options.hasGlobalSyntheticsConsumer()));
- }
-
private void synthesizeAnnotations(SyntheticProgramClassBuilder builder) {
- if (isEmitLambdaMethodAnnotations(appView.options())) {
+ if (appView.options().emitLambdaMethodAnnotations) {
builder.addAnnotation(target.getLambdaMethodAnnotation(builder.getFactory()));
}
}
@@ -271,7 +265,7 @@
AppView<?> appView,
LambdaDesugaringEventConsumer eventConsumer,
Collection<? extends ProgramDefinition> contexts) {
- if (!isEmitLambdaMethodAnnotations(appView.options())) {
+ if (!appView.options().emitLambdaMethodAnnotations) {
return;
}
DexType lambdaClassAnnotationType = appView.dexItemFactory().lambdaMethodAnnotation;
diff --git a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaCallTargetAnnotationTest.java b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaCallTargetAnnotationTest.java
index 000bedd..a4b9d3c 100644
--- a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaCallTargetAnnotationTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaCallTargetAnnotationTest.java
@@ -3,12 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.desugar.lambdas;
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentIf;
+import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.GlobalSyntheticsTestingConsumer;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -31,19 +30,15 @@
public TestParameters parameters;
@Parameter(1)
- public CompilationMode mode;
-
- @Parameter(2)
public boolean intermediate;
- @Parameter(3)
+ @Parameter(2)
public boolean forceLambdaAccessor;
- @Parameterized.Parameters(name = "{0}, mode = {1}, intermediate = {2}, forceLambdaAccessor = {3}")
+ @Parameterized.Parameters(name = "{0}, intermediate = {1}, forceLambdaAccessor = {2}")
public static List<Object[]> data() {
return buildParameters(
getTestParameters().withNoneRuntime().build(),
- CompilationMode.values(),
BooleanUtils.values(),
BooleanUtils.values());
}
@@ -58,10 +53,7 @@
private void checkAnnotation(
AnnotationSubject lambdaMethodAnnotation, String holder, String method, String proto) {
- assertThat(lambdaMethodAnnotation, isPresentIf(mode.isDebug()));
- if (mode.isRelease()) {
- return;
- }
+ assertThat(lambdaMethodAnnotation, isPresent());
DexEncodedAnnotation encodedAnnotation = lambdaMethodAnnotation.getAnnotation();
assertEquals(3, encodedAnnotation.getNumberOfElements());
@@ -78,8 +70,9 @@
testForD8(Backend.DEX)
.addInnerClasses(LambdaCallTargetAnnotationTest.class)
.setMinApi(AndroidApiLevel.L)
- .setMode(mode)
- .setIntermediate(mode.isDebug() && intermediate)
+ .debug()
+ .setIntermediate(intermediate)
+ .addOptionsModification(options -> options.emitLambdaMethodAnnotations = true)
.applyIf(intermediate, b -> b.getBuilder().setGlobalSyntheticsConsumer(globals))
.addOptionsModification(
options -> options.testing.forceLambdaAccessorInD8 = forceLambdaAccessor)