Respect -dontnote in lambda merger
Bug: 177337814
Change-Id: If49b11068b0d6ea5d1875d4e1b85a1badb798f05
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 3bb366d..4f5ca5d 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
@@ -48,6 +48,7 @@
import com.android.tools.r8.ir.optimize.lambda.kotlin.KotlinLambdaGroupIdFactory;
import com.android.tools.r8.kotlin.Kotlin;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.shaking.ProguardConfiguration;
import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.StringDiagnostic;
import com.android.tools.r8.utils.ThreadUtils;
@@ -399,20 +400,30 @@
for (LambdaGroup group : groups.values()) {
ThrowingConsumer<DexClass, LambdaStructureError> validator =
group.lambdaClassValidator(kotlin, appView.appInfo());
- group.forEachLambda(info ->
- futures.add(service.submit(() -> {
- try {
- validator.accept(info.clazz);
- } catch (LambdaStructureError error) {
- if (error.reportable) {
- reporter.info(
- new StringDiagnostic("Unexpected Kotlin lambda structure [" +
- info.clazz.type.toSourceString() + "]: " + error.getMessage())
- );
- }
- invalidateLambda(info.clazz.type);
- }
- })));
+ group.forEachLambda(
+ info ->
+ futures.add(
+ service.submit(
+ () -> {
+ try {
+ validator.accept(info.clazz);
+ } catch (LambdaStructureError error) {
+ ProguardConfiguration proguardConfiguration =
+ appView.options().getProguardConfiguration();
+ if (error.reportable
+ && !proguardConfiguration
+ .getDontNotePatterns()
+ .matches(info.clazz.getType())) {
+ reporter.info(
+ new StringDiagnostic(
+ "Unexpected Kotlin lambda structure ["
+ + info.clazz.type.toSourceString()
+ + "]: "
+ + error.getMessage()));
+ }
+ invalidateLambda(info.clazz.type);
+ }
+ })));
}
ThreadUtils.awaitFutures(futures);
}