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);
+ }
}