Revert "Revert "Revert "Ensure lookupDescriptor do not introduce duplicate minified types"""
This reverts commit 14373a9561007ea00c6ef11de02ec5362e7ce6e7.
Reason for revert: Error when sorting dex item factory
Change-Id: I3bbbb2115698d5f46a5c14c0d224e659a7d7defa
diff --git a/src/main/java/com/android/tools/r8/naming/Minifier.java b/src/main/java/com/android/tools/r8/naming/Minifier.java
index 5699d03..5333125 100644
--- a/src/main/java/com/android/tools/r8/naming/Minifier.java
+++ b/src/main/java/com/android/tools/r8/naming/Minifier.java
@@ -24,7 +24,6 @@
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.Timing;
import com.google.common.collect.ImmutableMap;
-import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
@@ -87,13 +86,11 @@
return lens;
}
- static class MinifiedRenaming extends NamingLens {
+ private static class MinifiedRenaming extends NamingLens {
private final AppInfo appInfo;
private final Map<String, String> packageRenaming;
private final Map<DexItem, DexString> renaming = new IdentityHashMap<>();
- // This set is only used for asserting no duplicated names.
- private final Map<DexString, DexType> renamedTypesForVerification;
private MinifiedRenaming(
ClassRenaming classRenaming,
@@ -106,10 +103,6 @@
renaming.putAll(methodRenaming.renaming);
renaming.putAll(methodRenaming.callSiteRenaming);
renaming.putAll(fieldRenaming.renaming);
- renamedTypesForVerification = new HashMap<>();
- for (Map.Entry<DexType, DexString> entry : classRenaming.classRenaming.entrySet()) {
- renamedTypesForVerification.put(entry.getValue(), entry.getKey());
- }
}
@Override
@@ -119,18 +112,7 @@
@Override
public DexString lookupDescriptor(DexType type) {
- DexString dexString = renaming.get(type);
- if (dexString != null) {
- return dexString;
- }
- assert type.isPrimitiveType()
- || type.isVoidType()
- || !renamedTypesForVerification.containsKey(type.descriptor)
- : "Duplicate minified type '"
- + type.descriptor
- + "' already mapped for: "
- + renamedTypesForVerification.get(type.descriptor);
- return type.descriptor;
+ return renaming.getOrDefault(type, type.descriptor);
}
@Override
diff --git a/src/test/java/com/android/tools/r8/naming/MinifierTest.java b/src/test/java/com/android/tools/r8/naming/MinifierTest.java
index adf74ce..473ca53 100644
--- a/src/test/java/com/android/tools/r8/naming/MinifierTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MinifierTest.java
@@ -3,16 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.naming;
-import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.fail;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.naming.Minifier.MinifiedRenaming;
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.Timing;
import java.nio.file.Paths;
@@ -43,25 +40,6 @@
inspection.accept(dexItemFactory, naming);
}
- @Test
- public void ensureClassesAddedToRenamingOrNoClashTest() throws Exception {
- MinifiedRenaming naming =
- (MinifiedRenaming) runMinifier(ListUtils.map(keepRulesFiles, Paths::get));
- // Create a type that exists.
- String existingType = "La/c;";
- DexType d = dexItemFactory.createType(existingType);
- try {
- naming.lookupDescriptor(d);
- } catch (AssertionError ae) {
- assertTrue(
- ae.getMessage()
- .startsWith(
- "Duplicate minified type '" + existingType + "' already mapped for: naming001."));
- return;
- }
- fail("Should have thrown an error.");
- }
-
@Parameters(name = "test: {0} keep: {1}")
public static Collection<Object[]> data() {
List<String> tests = Arrays.asList("naming001");