Add origin to the printconfigurations output

Bug: 134372926

Change-Id: I2f63d751cd3889a6d8e15171ae7701813d42d8b7
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index 4778c35..2dc865b 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -214,8 +214,14 @@
       do {
         skipWhitespace();
       } while (parseOption());
+      // This may be unknown, but we want to always ensure that we don't attribute lines to the
+      // wrong configuration.
+      configurationBuilder.addParsedConfiguration(
+            "# The proguard configuration file for the following section is " + origin.toString());
+
       // Collect the parsed configuration.
       configurationBuilder.addParsedConfiguration(contents.substring(positionAfterInclude));
+      configurationBuilder.addParsedConfiguration("# End of content from " + origin.toString());
     }
 
     private boolean parseOption() throws ProguardRuleParserException {
diff --git a/src/test/java/com/android/tools/r8/shaking/PrintConfigurationTest.java b/src/test/java/com/android/tools/r8/shaking/PrintConfigurationTest.java
index 4ea48cb..df33e06 100644
--- a/src/test/java/com/android/tools/r8/shaking/PrintConfigurationTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/PrintConfigurationTest.java
@@ -17,6 +17,7 @@
 import com.google.common.base.Charsets;
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
+import java.util.stream.Collectors;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -52,7 +53,23 @@
         .addProgramClasses(PrintConfigurationTestClass.class)
         .addKeepRules(proguardConfig)
         .compile();
-    assertEquals(proguardConfig, FileUtils.readTextFile(printConfigurationFile, Charsets.UTF_8));
+    assertEqualsStripOrigin(proguardConfig,
+        FileUtils.readTextFile(printConfigurationFile, Charsets.UTF_8));
+  }
+
+  private String removeOriginComments(String s) {
+    return StringUtils.lines(
+        StringUtils.splitLines(s)
+        .stream()
+            .filter(line -> !line.startsWith("# The proguard"))
+            .filter(line -> !line.startsWith("# End of content"))
+            .filter(line -> !line.equals(""))
+            .collect(Collectors.toList()));
+  }
+
+  private void assertEqualsStripOrigin(String a, String b) {
+    String expected = removeOriginComments(a);
+    assertEquals(expected, removeOriginComments(b));
   }
 
   @Test
@@ -72,7 +89,12 @@
         .addKeepRuleFiles(proguardConfigFile)
         .compile();
 
-    assertEquals(proguardConfig, FileUtils.readTextFile(proguardConfigOutFile, Charsets.UTF_8));
+    String outFileContent = FileUtils.readTextFile(proguardConfigOutFile, Charsets.UTF_8);
+    assertEqualsStripOrigin(proguardConfig, outFileContent);
+    // We should have added the proguard-config.txt file as the origin in the config output
+
+    String firstLine = StringUtils.splitLines(outFileContent).get(0);
+    assertThat(outFileContent, containsString(proguardConfigFile.toString()));
   }
 
   @Test
@@ -129,6 +151,7 @@
         "-printconfiguration " + printConfigurationFile.toString()
     ));
     compileWithR8(ImmutableList.of(mainClass), proguardConfig);
-    assertEquals(expected, FileUtils.readTextFile(printConfigurationFile, Charsets.UTF_8));
+    assertEqualsStripOrigin(expected,
+        FileUtils.readTextFile(printConfigurationFile, Charsets.UTF_8));
   }
 }