Desugared library: enable checksums
Bug: 158746302
Change-Id: Ic2d6b3da6e26a0ffb5db548ac604564b9b008fb7
diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index e116676..48f2f7a 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -25,6 +25,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.function.BiPredicate;
import java.util.function.Consumer;
/** Immutable command structure for an invocation of the {@link L8} library compiler. */
@@ -86,6 +87,8 @@
StringConsumer mainDexListConsumer,
int minApiLevel,
Reporter diagnosticsHandler,
+ boolean encodeChecksum,
+ BiPredicate<String, Long> dexClassChecksumFilter,
DesugaredLibraryConfiguration libraryConfiguration,
List<AssertionsConfiguration> assertionsConfiguration,
List<Consumer<Inspector>> outputInspections,
@@ -100,8 +103,8 @@
diagnosticsHandler,
DesugarState.ON,
false,
- false,
- (name, checksum) -> true,
+ encodeChecksum,
+ dexClassChecksumFilter,
assertionsConfiguration,
outputInspections,
threadCount);
@@ -296,6 +299,8 @@
libraryConfiguration.getSynthesizedLibraryClassesPackagePrefix())
.setMinApiLevel(getMinApiLevel())
.setMode(getMode())
+ .setIncludeClassesChecksum(getIncludeClassesChecksum())
+ .setDexClassChecksumFilter(getDexClassChecksumFilter())
.setProgramConsumer(getProgramConsumer());
for (ClassFileResourceProvider libraryResourceProvider :
inputs.getLibraryResourceProviders()) {
@@ -316,6 +321,8 @@
libraryConfiguration.getSynthesizedLibraryClassesPackagePrefix())
.setMinApiLevel(getMinApiLevel())
.setMode(getMode())
+ .setIncludeClassesChecksum(getIncludeClassesChecksum())
+ .setDexClassChecksumFilter(getDexClassChecksumFilter())
.setProgramConsumer(getProgramConsumer());
for (ClassFileResourceProvider libraryResourceProvider :
inputs.getLibraryResourceProviders()) {
@@ -332,6 +339,8 @@
getMainDexListConsumer(),
getMinApiLevel(),
getReporter(),
+ getIncludeClassesChecksum(),
+ getDexClassChecksumFilter(),
libraryConfiguration,
getAssertionsConfiguration(),
getOutputInspections(),
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibaryChecksumsTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryChecksumsTest.java
similarity index 72%
rename from src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibaryChecksumsTest.java
rename to src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryChecksumsTest.java
index 8280f92..42df609 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibaryChecksumsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryChecksumsTest.java
@@ -3,8 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.desugar.desugaredlibrary;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.CompilationMode;
@@ -16,7 +14,6 @@
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
@@ -26,14 +23,14 @@
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
-public class DesugaredLibaryChecksumsTest extends TestBase {
+public class DesugaredLibraryChecksumsTest extends TestBase {
@Parameterized.Parameters(name = "{0}")
public static TestParametersCollection data() {
return getTestParameters().withNoneRuntime().build();
}
- public DesugaredLibaryChecksumsTest(TestParameters parameters) {
+ public DesugaredLibraryChecksumsTest(TestParameters parameters) {
parameters.assertNoneRuntime();
}
@@ -52,16 +49,9 @@
.setMinApiLevel(AndroidApiLevel.B.getLevel())
.setOutput(out, OutputMode.DexIndexed)
.build());
-
- try {
- CodeInspector inspector = new CodeInspector(out);
- for (FoundClassSubject clazz : inspector.allClasses()) {
- assertTrue(clazz.getDexProgramClass().getChecksum() > 0);
- }
- } catch (CompilationError e) {
- // TODO(b/158746302): Desugared library should support checksums.
- // also, the failure should have occured in the L8.run above!
- assertThat(e.getMessage(), containsString("has no checksum"));
+ CodeInspector inspector = new CodeInspector(out);
+ for (FoundClassSubject clazz : inspector.allClasses()) {
+ assertTrue(clazz.getDexProgramClass().getChecksum() != 0);
}
}
}