Workaround for unrealesed updated desugared library
Bug: 177977763
Change-Id: Ifdfab7e7fcd622f66913f9e90e471740bf565e8c
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryRetargeter.java b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryRetargeter.java
index 1bda095..a6606ed 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryRetargeter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryRetargeter.java
@@ -362,8 +362,10 @@
private class RetargetingSetup {
private void setUpRetargeting() {
+ DesugaredLibraryConfiguration desugaredLibraryConfiguration =
+ appView.options().desugaredLibraryConfiguration;
Map<DexString, Map<DexType, DexType>> retargetCoreLibMember =
- appView.options().desugaredLibraryConfiguration.getRetargetCoreLibMember();
+ desugaredLibraryConfiguration.getRetargetCoreLibMember();
for (DexString methodName : retargetCoreLibMember.keySet()) {
for (DexType inType : retargetCoreLibMember.get(methodName).keySet()) {
DexClass typeClass = appView.definitionFor(inType);
@@ -392,6 +394,22 @@
}
}
}
+ if (desugaredLibraryConfiguration.isLibraryCompilation()) {
+ // TODO(b/177977763): This is only a workaround rewriting invokes of j.u.Arrays.deepEquals0
+ // to j.u.DesugarArrays.deepEquals0.
+ DexItemFactory itemFactory = appView.options().dexItemFactory();
+ DexString name = itemFactory.createString("deepEquals0");
+ DexProto proto =
+ itemFactory.createProto(
+ itemFactory.booleanType, itemFactory.objectType, itemFactory.objectType);
+ DexMethod source =
+ itemFactory.createMethod(
+ itemFactory.createType(itemFactory.arraysDescriptor), proto, name);
+ DexMethod target =
+ itemFactory.createMethod(
+ itemFactory.createType("Ljava/util/DesugarArrays;"), proto, name);
+ retargetLibraryMember.put(source, target);
+ }
}
private boolean isEmulatedInterfaceDispatch(DexClassAndMethod method) {
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
index 8031f43..f62067c 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
@@ -421,8 +421,8 @@
private String expectedOutput(boolean objectsRequireNonNullWithSupplierSupported) {
return StringUtils.lines(
"1",
- "true",
- "true",
+ "false",
+ "false",
Objects.toString(Objects.hash(1, 2)),
"4",
"NPE",
@@ -525,8 +525,8 @@
boolean objectsRequireNonNullWithSupplierSupported = Boolean.parseBoolean(args[0]);
// Android K methods.
objectsCompare("b", "a");
- objectsDeepEquals(args, args);
- objectsEquals(args, args);
+ objectsDeepEquals(args, new Object());
+ objectsEquals(args, new Object());
objectsHash(1, 2);
objectsHashCode(4);
objectsRequireNonNull(System.currentTimeMillis() >= 0 ? null : new Object());