Add test and fix for duplicate source error in SeedMapper

Bug: 133484583
Change-Id: Ic1b2404be923419ed859a66edda8e41c2e5bbcd9
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMapError.java b/src/main/java/com/android/tools/r8/naming/ProguardMapError.java
index 718d170..1f2ec2d 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMapError.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMapError.java
@@ -13,10 +13,6 @@
   protected static final String DUPLICATE_TARGET_MESSAGE = "'%s' and '%s' map to same name: '%s'";
   protected static final String DUPLICATE_SOURCE_MESSAGE = "'%s' already has a mapping";
 
-  private ProguardMapError(String message) {
-    super(message);
-  }
-
   private ProguardMapError(String message, Position position) {
     super(message, null, Origin.unknown(), position);
   }
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
index ef9aedd..7192a86 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
@@ -248,12 +248,12 @@
       if (activeMemberNaming != null) {
         boolean changedName = !activeMemberNaming.getRenamedName().equals(renamedName);
         boolean changedMappedRange = !Objects.equals(previousMappedRange, mappedRange);
-        boolean notAdded =
-            lastAddedNaming == null
-                || !lastAddedNaming.getOriginalSignature().equals(activeMemberNaming.signature);
-        if (changedName || previousMappedRange == null || (changedMappedRange && notAdded)) {
-          classNamingBuilder.addMemberEntry(activeMemberNaming);
-          lastAddedNaming = activeMemberNaming;
+        if (changedName || previousMappedRange == null || changedMappedRange) {
+          if (lastAddedNaming == null
+              || !lastAddedNaming.getOriginalSignature().equals(activeMemberNaming.signature)) {
+            classNamingBuilder.addMemberEntry(activeMemberNaming);
+            lastAddedNaming = activeMemberNaming;
+          }
         }
       }
       activeMemberNaming = new MemberNaming(signature, renamedName, getPosition());
diff --git a/src/test/java/com/android/tools/r8/naming/SeedMapperTests.java b/src/test/java/com/android/tools/r8/naming/SeedMapperTests.java
index 4c265ef..baeb6fa 100644
--- a/src/test/java/com/android/tools/r8/naming/SeedMapperTests.java
+++ b/src/test/java/com/android/tools/r8/naming/SeedMapperTests.java
@@ -192,4 +192,18 @@
     Reporter reporter = new Reporter(testDiagnosticMessages);
     SeedMapper.seedMapperFromFile(reporter, applyMappingFile);
   }
+
+  @Test
+  public void testMultipleInitRanges() throws IOException {
+    Path applyMappingFile =
+        getApplyMappingFile(
+            "com.android.tools.r8.ArchiveClassFileProvider ->"
+                + " com.android.tools.r8.ArchiveClassFileProvider:",
+            "    1:1:void <init>(java.nio.file.Path):50:50 -> <init>",
+            "    2:2:void <init>(java.nio.file.Path):59:59 -> <init>",
+            "    boolean lambda$new$0(java.lang.String) -> a");
+    TestDiagnosticMessagesImpl testDiagnosticMessages = new TestDiagnosticMessagesImpl();
+    Reporter reporter = new Reporter(testDiagnosticMessages);
+    SeedMapper.seedMapperFromFile(reporter, applyMappingFile);
+  }
 }