Add support for running kotlin tests on kotlin dev version

Bug: 200582899
Change-Id: If9cdcac5751ca275432d7734b669a6b7f3e44902
diff --git a/src/test/java/com/android/tools/r8/KotlinCompilerTool.java b/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
index 9312cf8..94ceeb4 100644
--- a/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
+++ b/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
@@ -60,7 +60,8 @@
   public enum KotlinCompilerVersion implements Ordered<KotlinCompilerVersion> {
     KOTLINC_1_3_72("kotlin-compiler-1.3.72"),
     KOTLINC_1_4_20("kotlin-compiler-1.4.20"),
-    KOTLINC_1_5_0("kotlin-compiler-1.5.0");
+    KOTLINC_1_5_0("kotlin-compiler-1.5.0"),
+    KOTLIN_DEV("kotlin-compiler-dev");
 
     public static final KotlinCompilerVersion MIN_SUPPORTED_VERSION = KOTLINC_1_4_20;
     public static final KotlinCompilerVersion MAX_SUPPORTED_VERSION = KOTLINC_1_5_0;
diff --git a/src/test/java/com/android/tools/r8/KotlinTestParameters.java b/src/test/java/com/android/tools/r8/KotlinTestParameters.java
index 4869735..534a42c 100644
--- a/src/test/java/com/android/tools/r8/KotlinTestParameters.java
+++ b/src/test/java/com/android/tools/r8/KotlinTestParameters.java
@@ -6,9 +6,12 @@
 import com.android.tools.r8.KotlinCompilerTool.KotlinCompiler;
 import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
 import com.android.tools.r8.KotlinCompilerTool.KotlinTargetVersion;
+import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 public class KotlinTestParameters {
 
@@ -56,6 +59,8 @@
 
     private Predicate<KotlinCompilerVersion> compilerFilter = c -> false;
     private Predicate<KotlinTargetVersion> targetVersionFilter = t -> false;
+    private boolean withDevCompiler =
+        System.getProperty("com.android.tools.r8.kotlincompilerdev") != null;
 
     private Builder() {}
 
@@ -83,6 +88,11 @@
       return this;
     }
 
+    public Builder withDevCompiler() {
+      this.withDevCompiler = true;
+      return this;
+    }
+
     public Builder withAllTargetVersions() {
       withTargetVersionFilter(t -> t != KotlinTargetVersion.NONE);
       return this;
@@ -105,15 +115,24 @@
     public KotlinTestParametersCollection build() {
       List<KotlinTestParameters> testParameters = new ArrayList<>();
       int index = 0;
-      for (KotlinCompilerVersion kotlinVersion : KotlinCompilerVersion.values()) {
+      List<KotlinCompilerVersion> compilerVersions;
+      if (withDevCompiler) {
+        compilerVersions = ImmutableList.of(KotlinCompilerVersion.KOTLIN_DEV);
+      } else {
+        compilerVersions =
+            Arrays.stream(KotlinCompilerVersion.values())
+                .filter(c -> c != KotlinCompilerVersion.KOTLIN_DEV && compilerFilter.test(c))
+                .collect(Collectors.toList());
+      }
+      for (KotlinCompilerVersion kotlinVersion : compilerVersions) {
         for (KotlinTargetVersion targetVersion : KotlinTargetVersion.values()) {
           // KotlinTargetVersion java 6 is deprecated from kotlinc 1.5 and forward, no need to run
           // tests on that target.
           if (targetVersion == KotlinTargetVersion.JAVA_6
-              && kotlinVersion.equals(KotlinCompilerVersion.KOTLINC_1_5_0)) {
+              && kotlinVersion.isGreaterThanOrEqualTo(KotlinCompilerVersion.KOTLINC_1_5_0)) {
             continue;
           }
-          if (compilerFilter.test(kotlinVersion) && targetVersionFilter.test(targetVersion)) {
+          if (targetVersionFilter.test(targetVersion)) {
             testParameters.add(
                 new KotlinTestParameters(
                     new KotlinCompiler(kotlinVersion), targetVersion, index++));
diff --git a/third_party/kotlin/kotlin-compiler-dev.tar.gz.sha1 b/third_party/kotlin/kotlin-compiler-dev.tar.gz.sha1
index 9ff5928..9aefa3f 100644
--- a/third_party/kotlin/kotlin-compiler-dev.tar.gz.sha1
+++ b/third_party/kotlin/kotlin-compiler-dev.tar.gz.sha1
@@ -1 +1 @@
-853bdb3640fd85a859d9baf3a972f71b037c5f8c
\ No newline at end of file
+d78e3bea626ae7f07cce1160a0af5c5c6812468e
\ No newline at end of file
diff --git a/tools/test.py b/tools/test.py
index c278251..2cab0e1 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -188,7 +188,7 @@
       '--stacktrace',
       help='Pass --stacktrace to the gradle run',
       default=False, action='store_true')
-  result.add_option('--kotlin-dev-compiler',
+  result.add_option('--kotlin-compiler-dev',
                     help='Specify to download a kotlin dev compiler and run '
                          'tests with that',
                     default=False, action='store_true')
@@ -281,6 +281,7 @@
   if options.print_obfuscated_stacktraces:
     gradle_args.append('-Pprint_obfuscated_stacktraces')
   if options.kotlin_dev_compiler:
+    gradle_args.append('-Dcom.android.tools.r8.kotlincompilerdev=1')
     download_kotlin_dev.download_newest()
   if os.name == 'nt':
     # temporary hack