Make main dex list parsing more tolerant
I.e. ignore:
- Trailing and leading withespaces.
- Empty lines.
Change-Id: I71d015c9a56cd436b07597297023ada53c2d1207
diff --git a/src/main/java/com/android/tools/r8/utils/MainDexList.java b/src/main/java/com/android/tools/r8/utils/MainDexList.java
index 826901a..6862580 100644
--- a/src/main/java/com/android/tools/r8/utils/MainDexList.java
+++ b/src/main/java/com/android/tools/r8/utils/MainDexList.java
@@ -47,7 +47,10 @@
new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
String line;
while ((line = file.readLine()) != null) {
- result.add(parse(line, itemFactory));
+ line = line.trim();
+ if (line.length() > 0) {
+ result.add(parse(line, itemFactory));
+ }
}
} catch (IOException e) {
throw new CompilationError("Cannot load main-dex-list.");
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
index b0a683a..ed19b8e 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
@@ -232,6 +232,20 @@
}
@Test
+ public void validList() throws IOException {
+ List<String> list = ImmutableList.of(
+ "A.class ",
+ " a/b/c/D.class",
+ ""
+ );
+ DexItemFactory factory = new DexItemFactory();
+ Path mainDexList = temp.getRoot().toPath().resolve("valid.txt");
+ FileUtils.writeTextFile(mainDexList, list);
+ Set<DexType> types = MainDexList.parse(mainDexList, factory);
+ assertEquals(2, types.size());
+ }
+
+ @Test
public void invalidQualifiedEntry() throws IOException {
thrown.expect(CompilationError.class);
DexItemFactory factory = new DexItemFactory();