Allow for package-info mappings in mapping files
Bug: 172450929
Change-Id: I6294d38db1db9eb09a778cdf4272155df0644db5
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 23a9a06..49b46cd 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
@@ -221,10 +221,6 @@
skipWhitespace();
// Workaround for proguard map files that contain entries for package-info.java files.
assert IdentifierUtils.isDexIdentifierPart('-');
- if (before.endsWith("package-info")) {
- skipLine();
- continue;
- }
if (before.endsWith("-") && acceptString(">")) {
// With - as a legal identifier part the grammar is ambiguous, and we treat a->b as a -> b,
// and not as a- > b (which would be a parse error).
diff --git a/src/test/java/com/android/tools/r8/naming/ProguardMapReaderPackageInfoTest.java b/src/test/java/com/android/tools/r8/naming/ProguardMapReaderPackageInfoTest.java
new file mode 100644
index 0000000..c889dbb
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/naming/ProguardMapReaderPackageInfoTest.java
@@ -0,0 +1,39 @@
+// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.naming;
+
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.utils.StringUtils;
+import java.io.IOException;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class ProguardMapReaderPackageInfoTest extends TestBase {
+
+ private final TestParameters parameters;
+ private final String MAPPING =
+ StringUtils.joinLines(
+ "android.support.v4.internal.package-info -> android.support.v4.internal.package-info:",
+ "# {\"id\":\"sourceFile\",\"fileName\":\"SourceFile\"}");
+
+ @Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withNoneRuntime().build();
+ }
+
+ public ProguardMapReaderPackageInfoTest(TestParameters parameters) {
+ this.parameters = parameters;
+ }
+
+ @Test
+ public void parseMappings() throws IOException {
+ ClassNameMapper.mapperFromString(MAPPING);
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/naming/ProguardMapReaderTest.java b/src/test/java/com/android/tools/r8/naming/ProguardMapReaderTest.java
index 1ab9fe1..668a8a0 100644
--- a/src/test/java/com/android/tools/r8/naming/ProguardMapReaderTest.java
+++ b/src/test/java/com/android/tools/r8/naming/ProguardMapReaderTest.java
@@ -26,7 +26,7 @@
private static final String ROOT = ToolHelper.EXAMPLES_BUILD_DIR;
private static final String EXAMPLE_MAP = "throwing/throwing.map";
private static final String EXAMPLE_MAP_WITH_PACKAGE_INFO =
- "dagger.android.package-info -> dagger.android.package-info\n";
+ "dagger.android.package-info -> dagger.android.package-info:\n";
@Test
public void parseThrowingMap() throws IOException {
@@ -141,7 +141,7 @@
@Test
public void parseMapWithPackageInfo() throws IOException {
ClassNameMapper mapper = ClassNameMapper.mapperFromString(EXAMPLE_MAP_WITH_PACKAGE_INFO);
- Assert.assertTrue(mapper.getObfuscatedToOriginalMapping().original.isEmpty());
+ assertEquals(1, mapper.getObfuscatedToOriginalMapping().original.size());
}
@Test
diff --git a/tools/run_on_app_dump.py b/tools/run_on_app_dump.py
index bed0a68..0bfb39d 100755
--- a/tools/run_on_app_dump.py
+++ b/tools/run_on_app_dump.py
@@ -90,8 +90,6 @@
'url': 'https://github.com/christofferqa/AntennaPod.git',
'revision': '77e94f4783a16abe9cc5b78dc2d2b2b1867d8c06',
'folder': 'antennapod',
- # TODO(b/172450929): Fix recompilation
- 'skip_recompilation': True
}),
App({
'id': 'com.example.applymapping',