Version 1.6.39

Cherry pick: Allow for adding library classes to ProguardBuilder
CL: https://r8-review.googlesource.com/c/r8/+/44221

Change-Id: I6dbe9bd07c44547f1997744727d9ef563bdedfbb
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 42f429f..261ead8 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "1.6.38";
+  public static final String LABEL = "1.6.39";
 
   private Version() {
   }
diff --git a/src/test/java/com/android/tools/r8/ProguardTestBuilder.java b/src/test/java/com/android/tools/r8/ProguardTestBuilder.java
index bdc5b16..e53fdce 100644
--- a/src/test/java/com/android/tools/r8/ProguardTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/ProguardTestBuilder.java
@@ -17,6 +17,7 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.function.Consumer;
@@ -193,6 +194,28 @@
   }
 
   @Override
+  public ProguardTestBuilder addLibraryClasses(Class<?>... classes) {
+    addLibraryClasses(Arrays.asList(classes));
+    return self();
+  }
+
+  @Override
+  public ProguardTestBuilder addLibraryClasses(Collection<Class<?>> classes) {
+    List<Path> pathsForClasses = new ArrayList<>(classes.size());
+    for (Class<?> clazz : classes) {
+      pathsForClasses.add(ToolHelper.getClassFileForTestClass(clazz));
+    }
+    try {
+      Path out = getState().getNewTempFolder().resolve("out.jar");
+      TestBase.writeClassFilesToJar(out, pathsForClasses);
+      libraryjars.add(out);
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+    return self();
+  }
+
+  @Override
   public ProguardTestBuilder addClasspathClasses(Collection<Class<?>> classes) {
     throw new Unimplemented("No support for adding classpath data directly");
   }
@@ -209,7 +232,10 @@
 
   @Override
   public ProguardTestBuilder setMinApi(AndroidApiLevel minApiLevel) {
-    throw new Unimplemented("No support for setting min api");
+    if (backend == Backend.DEX) {
+      throw new Unimplemented("No support for setting min api");
+    }
+    return self();
   }
 
   @Override