Allow for parsing comment lines before class mappings
Bug: 179665169
Bug: 179506350
Change-Id: I36f1948aa29638b5dd8e81c3304eaa6a2f0bb16f
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 4588437..0f94efa 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
@@ -222,6 +222,14 @@
private void parseClassMappings(ProguardMap.Builder mapBuilder) throws IOException {
while (hasLine()) {
skipWhitespace();
+ if (isCommentLineWithJsonBrace()) {
+ // TODO(b/179665169): Parse the mapping information without doing anything with it, since we
+ // at this point do not have a global context.
+ MappingInformation.fromJsonObject(parseJsonInComment(), diagnosticsHandler, lineNo);
+ // Skip reading the rest of the line.
+ lineOffset = line.length();
+ nextLine();
+ }
String before = parseType(false);
skipWhitespace();
// Workaround for proguard map files that contain entries for package-info.java files.
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 699a0ba..4e56011 100644
--- a/src/test/java/com/android/tools/r8/naming/ProguardMapReaderTest.java
+++ b/src/test/java/com/android/tools/r8/naming/ProguardMapReaderTest.java
@@ -201,8 +201,7 @@
}
}
- // TODO(b/179665652, b/179506350): Should not fail.
- @Test(expected = ParseException.class)
+ @Test()
public void testCommentLineBeforeAnyClassMappings() throws IOException {
String mapping =
StringUtils.lines(