From 8c28023c28981a9238789494ac6dfbb68d0b3381 Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 17 Apr 2024 01:49:58 -0700 Subject: [PATCH] Do not generating singletons for stateless lambdas when desugaring for Android RELNOTE: Stateless lambdas are no longer desugared as singletons when building for Android, see https://issuetracker.google.com/222081665. PiperOrigin-RevId: 625603411 Change-Id: Ie5fcfb9b04f5229cea5ebd940892900b5d2dd180 --- .../DexFileSplitter_synthetic_classes_test.sh | 13 +++++++++++-- .../java/com/google/devtools/build/android/r8/BUILD | 1 - .../google/devtools/build/android/r8/BUILD.tools | 1 - 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/test/shell/bazel/android/DexFileSplitter_synthetic_classes_test.sh b/src/test/shell/bazel/android/DexFileSplitter_synthetic_classes_test.sh index 95a4e0d83c835f..a2bfbc2a9bfd18 100755 --- a/src/test/shell/bazel/android/DexFileSplitter_synthetic_classes_test.sh +++ b/src/test/shell/bazel/android/DexFileSplitter_synthetic_classes_test.sh @@ -131,6 +131,15 @@ function generate_java_file_with_many_synthetic_classes() { echo " () -> $i," done + echo " };" + echo " }" + echo " public IntSupplier[] bar() {" + echo " return new IntSupplier[] {" + + for ((i = 0; i < $lambda_count; i++ )) do + echo " () -> $i," + done + echo " };" echo " }" echo " }" @@ -169,8 +178,8 @@ function test_DexMapper_synthetic_classes_crossing_dexfiles() { bazel build java/com/testapp || fail "Test app should have built succesfully" dex_file_count=$(unzip -l bazel-bin/java/com/testapp/testapp.apk | grep "classes[0-9]*.dex" | wc -l) - if [[ ! "$dex_file_count" -eq "5" ]]; then - echo "Expected 5 dexes in app, found: $dex_file_count" + if [[ ! "$dex_file_count" -eq "4" ]]; then + echo "Expected 4 dexes in app, found: $dex_file_count" exit 1 fi } diff --git a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD index c7569b3bdfaf28..5665c47cafcb18 100644 --- a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD +++ b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD @@ -98,7 +98,6 @@ java_binary( "-Dcom.android.tools.r8.allowAllDesugaredInput", "-Dcom.android.tools.r8.noCfMarkerForDesugaredCode", "-Dcom.android.tools.r8.lambdaClassFieldsNotFinal", - "-Dcom.android.tools.r8.createSingletonsForStatelessLambdas", ], main_class = "com.google.devtools.build.android.r8.Desugar", visibility = ["//src/test/java/com/google/devtools/build/android/r8:__pkg__"], diff --git a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools index 1567b9215cac53..0af30d53019754 100644 --- a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools +++ b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools @@ -43,7 +43,6 @@ java_binary( "-Dcom.android.tools.r8.allowAllDesugaredInput", "-Dcom.android.tools.r8.noCfMarkerForDesugaredCode", "-Dcom.android.tools.r8.lambdaClassFieldsNotFinal", - "-Dcom.android.tools.r8.createSingletonsForStatelessLambdas", ], main_class = "com.google.devtools.build.android.r8.Desugar", visibility = ["//visibility:public"],