Remove signature keys from additional mappings.

Change-Id: I190c2815800b6182fa45088a23eb5678ca04fee1
diff --git a/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java b/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
index 7ace45a..fb084f1 100644
--- a/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
+++ b/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
@@ -3,8 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.naming;
 
-import static com.android.tools.r8.naming.MemberNaming.NoSignature.NO_SIGNATURE;
-
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.naming.MemberNaming.FieldSignature;
 import com.android.tools.r8.naming.MemberNaming.MethodSignature;
@@ -14,6 +12,7 @@
 import com.android.tools.r8.naming.mappinginformation.MappingInformationDiagnostics;
 import com.android.tools.r8.utils.ChainableStringConsumer;
 import com.android.tools.r8.utils.ThrowingConsumer;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.util.ArrayList;
@@ -41,7 +40,7 @@
     private final Map<FieldSignature, MemberNaming> fieldMembers = Maps.newHashMap();
     private final Map<String, List<MappedRange>> mappedRangesByName = Maps.newHashMap();
     private final Map<String, List<MemberNaming>> mappedFieldNamingsByName = Maps.newHashMap();
-    private final Map<Signature, List<MappingInformation>> additionalMappings = Maps.newHashMap();
+    private final List<MappingInformation> additionalMappings = new ArrayList<>();
 
     private Builder(String renamedName, String originalName) {
       this.originalName = originalName;
@@ -85,15 +84,12 @@
 
     private ClassNaming.Builder addMappingInformation(
         MappingInformation mappingInformation, Consumer<MappingInformation> notAllowedCombination) {
-      Signature signature = NO_SIGNATURE;
-      List<MappingInformation> additionalMappingForSignature =
-          additionalMappings.computeIfAbsent(signature, ignored -> new ArrayList<>());
-      for (MappingInformation information : additionalMappingForSignature) {
+      for (MappingInformation information : additionalMappings) {
         if (!information.allowOther(mappingInformation)) {
           notAllowedCombination.accept(information);
         }
       }
-      additionalMappingForSignature.add(mappingInformation);
+      additionalMappings.add(mappingInformation);
       return this;
     }
 
@@ -117,7 +113,7 @@
           fieldMembers,
           map,
           mappedFieldNamingsByName,
-          additionalMappings);
+          ImmutableList.copyOf(additionalMappings));
     }
 
     /** The parameters are forwarded to MappedRange constructor, see explanation there. */
@@ -248,7 +244,7 @@
 
   public final Map<String, List<MemberNaming>> mappedFieldNamingsByName;
 
-  private final Map<Signature, List<MappingInformation>> additionalMappings;
+  private final ImmutableList<MappingInformation> additionalMappings;
 
   private ClassNamingForNameMapper(
       String renamedName,
@@ -257,13 +253,14 @@
       Map<FieldSignature, MemberNaming> fieldMembers,
       Map<String, MappedRangesOfName> mappedRangesByRenamedName,
       Map<String, List<MemberNaming>> mappedFieldNamingsByName,
-      Map<Signature, List<MappingInformation>> additionalMappings) {
+      ImmutableList<MappingInformation> additionalMappings) {
     this.renamedName = renamedName;
     this.originalName = originalName;
     this.methodMembers = ImmutableMap.copyOf(methodMembers);
     this.fieldMembers = ImmutableMap.copyOf(fieldMembers);
     this.mappedRangesByRenamedName = mappedRangesByRenamedName;
     this.mappedFieldNamingsByName = mappedFieldNamingsByName;
+    assert additionalMappings != null;
     this.additionalMappings = additionalMappings;
   }
 
@@ -353,13 +350,7 @@
     consumer.accept(originalName).accept(" -> ").accept(renamedName).accept(":\n");
 
     // Print all additional mapping information.
-    additionalMappings.forEach(
-        (signature, mappingInformations) -> {
-          assert !mappingInformations.isEmpty();
-          for (MappingInformation mappingInformation : mappingInformations) {
-            consumer.accept("# " + mappingInformation.serialize()).accept("\n");
-          }
-        });
+    additionalMappings.forEach(info -> consumer.accept("# " + info.serialize()).accept("\n"));
 
     // Print field member namings.
     forAllFieldNaming(m -> consumer.accept("    ").accept(m.toString()).accept("\n"));
@@ -376,7 +367,7 @@
     }
   }
 
-  public Map<Signature, List<MappingInformation>> getAdditionalMappings() {
+  public List<MappingInformation> getAdditionalMappings() {
     return additionalMappings;
   }
 
diff --git a/src/main/java/com/android/tools/r8/naming/MemberNaming.java b/src/main/java/com/android/tools/r8/naming/MemberNaming.java
index 4a50244..bf0a8dd 100644
--- a/src/main/java/com/android/tools/r8/naming/MemberNaming.java
+++ b/src/main/java/com/android/tools/r8/naming/MemberNaming.java
@@ -168,40 +168,6 @@
     }
   }
 
-  public static class NoSignature extends Signature {
-
-    public static final NoSignature NO_SIGNATURE = new NoSignature();
-
-    private NoSignature() {
-      super("NO SIGNATURE");
-    }
-
-    @Override
-    Signature asRenamed(String renamedName) {
-      throw new Unreachable("Should not be called on NoSignature");
-    }
-
-    @Override
-    public SignatureKind kind() {
-      throw new Unreachable("Should not be called on NoSignature");
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      return o == this;
-    }
-
-    @Override
-    public int hashCode() {
-      return 7;
-    }
-
-    @Override
-    void write(Writer builder) throws IOException {
-      throw new Unreachable("Should not be called on NoSignature");
-    }
-  }
-
   public static class FieldSignature extends Signature {
 
     public final String type;
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
index 15fdfdc..6bbc26a 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8.retrace.internal;
 
-import static com.android.tools.r8.naming.MemberNaming.NoSignature.NO_SIGNATURE;
 import static com.android.tools.r8.retrace.internal.RetraceUtils.synthesizeFileName;
 
 import com.android.tools.r8.naming.ClassNamingForNameMapper;
@@ -234,15 +233,11 @@
 
     @Override
     public RetraceSourceFileResultImpl retraceSourceFile(String sourceFile) {
-      if (mapper != null && mapper.getAdditionalMappings().size() > 0) {
-        List<MappingInformation> mappingInformations =
-            mapper.getAdditionalMappings().get(NO_SIGNATURE);
-        if (mappingInformations != null) {
-          for (MappingInformation mappingInformation : mappingInformations) {
-            if (mappingInformation.isFileNameInformation()) {
-              return new RetraceSourceFileResultImpl(
-                  mappingInformation.asFileNameInformation().getFileName(), false);
-            }
+      if (mapper != null) {
+        for (MappingInformation mappingInformation : mapper.getAdditionalMappings()) {
+          if (mappingInformation.isFileNameInformation()) {
+            return new RetraceSourceFileResultImpl(
+                mappingInformation.asFileNameInformation().getFileName(), false);
           }
         }
       }
diff --git a/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java b/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java
index 86a99b5..36916ad 100644
--- a/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java
@@ -8,11 +8,9 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.naming.MemberNaming.NoSignature;
 import com.android.tools.r8.naming.mappinginformation.MappingInformation;
 import com.android.tools.r8.utils.StringUtils;
 import java.io.IOException;
-import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -81,10 +79,7 @@
   }
 
   private boolean isCompilerSynthesized(ClassNamingForNameMapper naming) {
-    List<MappingInformation> infos = naming.getAdditionalMappings().get(NoSignature.NO_SIGNATURE);
-    if (infos == null || infos.isEmpty()) {
-      return false;
-    }
-    return infos.stream().anyMatch(MappingInformation::isCompilerSynthesizedMappingInformation);
+    return naming.getAdditionalMappings().stream()
+        .anyMatch(MappingInformation::isCompilerSynthesizedMappingInformation);
   }
 }
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
index 1763108..769760b 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
@@ -26,7 +26,6 @@
 import com.android.tools.r8.naming.MemberNaming;
 import com.android.tools.r8.naming.MemberNaming.FieldSignature;
 import com.android.tools.r8.naming.MemberNaming.MethodSignature;
-import com.android.tools.r8.naming.MemberNaming.NoSignature;
 import com.android.tools.r8.naming.MemberNaming.Signature;
 import com.android.tools.r8.naming.mappinginformation.MappingInformation;
 import com.android.tools.r8.naming.signature.GenericSignatureParser;
@@ -46,7 +45,6 @@
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
@@ -419,15 +417,7 @@
     if (naming == null) {
       return false;
     }
-    Map<Signature, List<MappingInformation>> additionalMappings = naming.getAdditionalMappings();
-    if (additionalMappings == null) {
-      return false;
-    }
-    List<MappingInformation> infos = additionalMappings.get(NoSignature.NO_SIGNATURE);
-    if (infos == null) {
-      return false;
-    }
-    for (MappingInformation info : infos) {
+    for (MappingInformation info : naming.getAdditionalMappings()) {
       if (info.isCompilerSynthesizedMappingInformation()) {
         return true;
       }