Cleanup StringUtils.join() parameter ordering

Fixes: 177812358
Change-Id: I24feac50cb6168b64493b540688ac774526a8a0d
diff --git a/src/main/java/com/android/tools/r8/PrintUses.java b/src/main/java/com/android/tools/r8/PrintUses.java
index 80b5ec7..d7310e5 100644
--- a/src/main/java/com/android/tools/r8/PrintUses.java
+++ b/src/main/java/com/android/tools/r8/PrintUses.java
@@ -584,7 +584,7 @@
 
     @Override
     void printPackageNames(List<String> packageNames) {
-      append("-keeppackagenames " + StringUtils.join(packageNames, ",") + "\n");
+      append("-keeppackagenames " + StringUtils.join(",", packageNames) + "\n");
     }
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
index d56b873..bc57c25 100644
--- a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
+++ b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
@@ -452,7 +452,7 @@
 
   @Override
   public void print(CfFrame frame) {
-    String keys = join(frame.getLocals().keySet(), ",");
+    String keys = join(",", frame.getLocals().keySet());
     String values = join(",", frame.getLocals().values(), this::frameTypeType);
     String stack = join(",", frame.getStack(), this::frameTypeType);
     printNewInstruction(
diff --git a/src/main/java/com/android/tools/r8/errors/DuplicateTypesDiagnostic.java b/src/main/java/com/android/tools/r8/errors/DuplicateTypesDiagnostic.java
index 1c35883..6aa7234 100644
--- a/src/main/java/com/android/tools/r8/errors/DuplicateTypesDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/DuplicateTypesDiagnostic.java
@@ -64,6 +64,6 @@
   @Override
   public String getDiagnosticMessage() {
     String typeName = DescriptorUtils.descriptorToJavaType(type.getDescriptor());
-    return "Type " + typeName + " is defined multiple times: " + StringUtils.join(origins, ", ");
+    return "Type " + typeName + " is defined multiple times: " + StringUtils.join(", ", origins);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index 506e8af..0995f34 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -973,7 +973,7 @@
                   || !v.hasDebugUsers()
                   || v.debugUsers().stream().anyMatch(i -> !i.isAssume())
                   || v.numberOfPhiUsers() > 0
-              : StringUtils.join(v.uniqueUsers(), System.lineSeparator());
+              : StringUtils.join(System.lineSeparator(), v.uniqueUsers());
           return true;
         };
     return verifySSATypeLattice(wrapSSAVerifierWithStackValueHandling(verifyValue));
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java b/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java
index df06045..411e7a8 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java
@@ -108,11 +108,10 @@
   public boolean noUpdatesLeft() {
     assert appInfoWithLivenessModifier.isEmpty();
     assert fieldOptimizationInfos.isEmpty()
-        : StringUtils.join(fieldOptimizationInfos.keySet(), ", ");
+        : StringUtils.join(", ", fieldOptimizationInfos.keySet());
     assert methodOptimizationInfos.isEmpty()
-        : StringUtils.join(methodOptimizationInfos.keySet(), ", ");
-    assert processed.isEmpty()
-        : StringUtils.join(processed.keySet(), ", ");
+        : StringUtils.join(", ", methodOptimizationInfos.keySet());
+    assert processed.isEmpty() : StringUtils.join(", ", processed.keySet());
     return true;
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/field/NonTrivialInstanceFieldInitializationInfoCollection.java b/src/main/java/com/android/tools/r8/ir/optimize/info/field/NonTrivialInstanceFieldInitializationInfoCollection.java
index 6fa0363..6335e27 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/field/NonTrivialInstanceFieldInitializationInfoCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/field/NonTrivialInstanceFieldInitializationInfoCollection.java
@@ -85,7 +85,7 @@
     List<String> strings = new ArrayList<>();
     infos.forEach((field, info) -> strings.add(field.toSourceString() + " -> " + info));
     return "NonTrivialInstanceFieldInitializationInfoCollection("
-        + StringUtils.join(strings, "; ")
+        + StringUtils.join("; ", strings)
         + ")";
   }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningReporterImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningReporterImpl.java
index ee2d4b5..257cc15 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningReporterImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningReporterImpl.java
@@ -147,7 +147,7 @@
         "not a valid inlining reason (was: "
             + reason
             + ", allowed: one of "
-            + StringUtils.join(validInliningReasons, ", ")
+            + StringUtils.join(", ", validInliningReasons)
             + ").");
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
index 5fdaf51..ca49a7d 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
@@ -540,7 +540,7 @@
       if (contents == null || contents.isEmpty()) {
         return;
       }
-      String result = StringUtils.join(contents, "");
+      String result = StringUtils.join("", contents);
       Integer size = Integer.valueOf(contents.size());
       Integer length = Integer.valueOf(result.length());
       if (isPartial) {
@@ -712,7 +712,7 @@
           builder, optimizationConfiguration)) {
         return null;
       }
-      String result = StringUtils.join(contents, "");
+      String result = StringUtils.join("", contents);
       int estimate = estimateSizeReduction(contents);
       return estimate > result.length() ? result : null;
     }
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
index ca1d394..fbfb3bb 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
@@ -110,7 +110,7 @@
       KotlinClassMetadata.MultiFileClassFacade kMetadata, String indent) {
     return indent
         + "MetaData.MultiFileClassFacade("
-        + StringUtils.join(kMetadata.getPartClassNames(), ", ")
+        + StringUtils.join(", ", kMetadata.getPartClassNames())
         + ")";
   }
 
@@ -327,16 +327,16 @@
         });
     String companionObject = kmClass.getCompanionObject();
     appendKeyValue(
-        indent, "enumEntries", sb, "[" + StringUtils.join(kmClass.getEnumEntries(), ",") + "]");
+        indent, "enumEntries", sb, "[" + StringUtils.join(",", kmClass.getEnumEntries()) + "]");
     appendKeyValue(
         indent, "companionObject", sb, companionObject == null ? "null" : companionObject);
     appendKeyValue(
         indent,
         "sealedSubclasses",
         sb,
-        "[" + StringUtils.join(kmClass.getSealedSubclasses(), ",") + "]");
+        "[" + StringUtils.join(",", kmClass.getSealedSubclasses()) + "]");
     appendKeyValue(
-        indent, "nestedClasses", sb, "[" + StringUtils.join(kmClass.getNestedClasses(), ",") + "]");
+        indent, "nestedClasses", sb, "[" + StringUtils.join(",", kmClass.getNestedClasses()) + "]");
     appendKeyValue(
         indent,
         "anonymousObjectOriginName",
diff --git a/src/main/java/com/android/tools/r8/references/MethodReference.java b/src/main/java/com/android/tools/r8/references/MethodReference.java
index 9ff0649..fc8f183 100644
--- a/src/main/java/com/android/tools/r8/references/MethodReference.java
+++ b/src/main/java/com/android/tools/r8/references/MethodReference.java
@@ -77,7 +77,7 @@
 
   public String getMethodDescriptor() {
     return StringUtils.join(
-            ListUtils.map(getFormalTypes(), TypeReference::getDescriptor), "", BraceType.PARENS)
+            "", ListUtils.map(getFormalTypes(), TypeReference::getDescriptor), BraceType.PARENS)
         + (getReturnType() == null ? "V" : getReturnType().getDescriptor());
   }
 
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
index 1b80a1e..df5bdd1 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
@@ -415,7 +415,7 @@
       case INIT: {
         result.append(getName());
         result.append('(');
-        result.append(StringUtils.join(getArguments(), ","));
+          result.append(StringUtils.join(",", getArguments()));
         result.append(')');
         break;
       }
diff --git a/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java b/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
index d56e455..1099f62 100644
--- a/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
+++ b/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
@@ -211,8 +211,8 @@
           + '.'
           + method.getMethodName()
           + StringUtils.join(
-              ListUtils.map(method.getFormalTypes(), TypeReference::getTypeName),
               ",",
+              ListUtils.map(method.getFormalTypes(), TypeReference::getTypeName),
               BraceType.PARENS);
     }
     if (node instanceof FieldGraphNode) {
diff --git a/src/main/java/com/android/tools/r8/tracereferences/KeepRuleFormatter.java b/src/main/java/com/android/tools/r8/tracereferences/KeepRuleFormatter.java
index c28ef5d..b768c52 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/KeepRuleFormatter.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/KeepRuleFormatter.java
@@ -73,7 +73,7 @@
   @Override
   protected void printPackageNames(List<String> packageNames) {
     if (!packageNames.isEmpty()) {
-      append("-keeppackagenames " + StringUtils.join(packageNames, ",") + System.lineSeparator());
+      append("-keeppackagenames " + StringUtils.join(",", packageNames) + System.lineSeparator());
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApp.java b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
index d1f6e4c..d58387f 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApp.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
@@ -510,7 +510,7 @@
         for (String mainDexClass : getMainDexClasses()) {
           mainDexList.add(mainDexClass.replace(".", "/") + CLASS_EXTENSION);
         }
-        String join = StringUtils.join(mainDexList, "\n");
+        String join = StringUtils.join("\n", mainDexList);
         writeToZipStream(out, dumpMainDexListResourceFileName, join.getBytes(), ZipEntry.DEFLATED);
       }
       if (options.hasMainDexKeepRules()) {
diff --git a/src/main/java/com/android/tools/r8/utils/StringUtils.java b/src/main/java/com/android/tools/r8/utils/StringUtils.java
index 8f398ac..9be7a5e 100644
--- a/src/main/java/com/android/tools/r8/utils/StringUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/StringUtils.java
@@ -124,20 +124,20 @@
     return builder;
   }
 
-  public static <T> String join(Collection<T> collection, String separator) {
-    return join(collection, separator, BraceType.NONE);
+  public static String join(String separator, String... strings) {
+    return join(separator, Arrays.asList(strings));
+  }
+
+  public static <T> String join(String separator, Iterable<T> iterable) {
+    return join(separator, iterable, BraceType.NONE);
   }
 
   public static <T> String join(String separator, Iterable<T> iterable, Function<T, String> fn) {
     return join(separator, iterable, fn, BraceType.NONE);
   }
 
-  public static String join(String separator, String... strings) {
-    return join(Arrays.asList(strings), separator, BraceType.NONE);
-  }
-
-  public static <T> String join(Collection<T> collection, String separator, BraceType brace) {
-    return join(separator, collection, Object::toString, brace);
+  public static <T> String join(String separator, Iterable<T> iterable, BraceType brace) {
+    return join(separator, iterable, Object::toString, brace);
   }
 
   public static <T> String join(
@@ -174,7 +174,7 @@
   }
 
   public static <T> String joinLines(Collection<T> collection) {
-    return join(collection, LINE_SEPARATOR, BraceType.NONE);
+    return join(LINE_SEPARATOR, collection, BraceType.NONE);
   }
 
   public static List<String> splitLines(String content) {
diff --git a/src/test/java/com/android/tools/r8/DeviceRunner.java b/src/test/java/com/android/tools/r8/DeviceRunner.java
index c68c8f2..fb46cfd 100644
--- a/src/test/java/com/android/tools/r8/DeviceRunner.java
+++ b/src/test/java/com/android/tools/r8/DeviceRunner.java
@@ -167,7 +167,8 @@
       throw new DeviceRunnerConfigurationException(
           "Running tests on more than one device is not yet supported. "
               + "Currently connected devices: ["
-              + StringUtils.join(Arrays.asList(connectedDevices), ",") + "]");
+              + StringUtils.join(",", Arrays.asList(connectedDevices))
+              + "]");
     }
 
     int exitStatus = -1;
diff --git a/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java b/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java
index 477af87..409d776 100644
--- a/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java
+++ b/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithSelfReferenceTestRunner.java
@@ -178,8 +178,8 @@
         DisassembleCommand.builder().addProgramFiles(out1).setOutputPath(dissasemble1).build());
     Disassemble.disassemble(
         DisassembleCommand.builder().addProgramFiles(out2).setOutputPath(dissasemble2).build());
-    String content1 = StringUtils.join(Files.readAllLines(dissasemble1), "\n");
-    String content2 = StringUtils.join(Files.readAllLines(dissasemble2), "\n");
+    String content1 = StringUtils.join("\n", Files.readAllLines(dissasemble1));
+    String content2 = StringUtils.join("\n", Files.readAllLines(dissasemble2));
     assertEquals(content1, content2);
   }
 }
diff --git a/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java b/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java
index 23c4628..7f41f05 100644
--- a/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java
+++ b/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java
@@ -213,9 +213,14 @@
         String returnType,
         String... lines) {
       StringBuilder builder = new StringBuilder();
-      builder.append(".method ").append(access).append(" ").append(name)
-          .append(StringUtils.join(argumentTypes, "", BraceType.PARENS))
-          .append(returnType).append("\n");
+      builder
+          .append(".method ")
+          .append(access)
+          .append(" ")
+          .append(name)
+          .append(StringUtils.join("", argumentTypes, BraceType.PARENS))
+          .append(returnType)
+          .append("\n");
       for (String line : lines) {
         builder.append(line).append("\n");
       }
@@ -382,7 +387,7 @@
       }
       builder
           .append(name)
-          .append(StringUtils.join(argumentTypes, "", BraceType.PARENS))
+          .append(StringUtils.join("", argumentTypes, BraceType.PARENS))
           .append(returnType)
           .append(System.lineSeparator());
       builder.append(".limit locals ").append(localsLimit).append(System.lineSeparator());
diff --git a/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java b/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java
index ab2d643..73f7a6f 100644
--- a/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java
+++ b/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java
@@ -219,7 +219,7 @@
     List<String> args = new ArrayList<>();
     args.add("--output=" + dex.toString());
     args.add(classes.toString());
-    System.out.println("running: dx " + StringUtils.join(args, " "));
+    System.out.println("running: dx " + StringUtils.join(" ", args));
     return ToolHelper.runDX(args.toArray(new String[args.size()]));
   }
 
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
index 668206c..1f7101b 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
@@ -69,8 +69,8 @@
       return new StackTrace(
           stackTraceLines,
           StringUtils.join(
-              stackTraceLines.stream().map(StackTraceLine::toString).collect(Collectors.toList()),
-              "\n"));
+              "\n",
+              stackTraceLines.stream().map(StackTraceLine::toString).collect(Collectors.toList())));
     }
   }
 
diff --git a/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java b/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java
index 9a1ad72..788bb0a 100644
--- a/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java
+++ b/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java
@@ -125,7 +125,7 @@
         if (isFlattenPackageHierarchy()) {
           expectedPackageNames.add(packageName != null ? packageName : "a");
         }
-        return StringUtils.join(expectedPackageNames, ".");
+        return StringUtils.join(".", expectedPackageNames);
       }
     };
   }
diff --git a/src/test/java/com/android/tools/r8/smali/SmaliBuilder.java b/src/test/java/com/android/tools/r8/smali/SmaliBuilder.java
index e9368e9..0a2c7ab 100644
--- a/src/test/java/com/android/tools/r8/smali/SmaliBuilder.java
+++ b/src/test/java/com/android/tools/r8/smali/SmaliBuilder.java
@@ -42,8 +42,14 @@
 
     @Override
     public String toString() {
-      return returnType + " " + clazz + "." + name
-          + "(" + StringUtils.join(parameterTypes, ",") + ")";
+      return returnType
+          + " "
+          + clazz
+          + "."
+          + name
+          + "("
+          + StringUtils.join(",", parameterTypes)
+          + ")";
     }
   }
 
diff --git a/src/test/java/com/android/tools/r8/testing/StackTraceTest.java b/src/test/java/com/android/tools/r8/testing/StackTraceTest.java
index 33915ef..41b6de3 100644
--- a/src/test/java/com/android/tools/r8/testing/StackTraceTest.java
+++ b/src/test/java/com/android/tools/r8/testing/StackTraceTest.java
@@ -40,12 +40,12 @@
   public void testJvmStackTrace() throws Exception {
     String stderr =
         StringUtils.join(
+            "\n",
             ImmutableList.of(
                 "Exception in thread \"main\" java.lang.RuntimeException",
                 "\tat com.example.A.method2(Test.java:30)",
                 "\tat com.example.A.method1(Test.java:20)",
-                "\tat com.example.Main.main(Test.java:10)"),
-            "\n");
+                "\tat com.example.Main.main(Test.java:10)"));
     checkStackTrace(StackTrace.extractFromJvm(stderr));
   }
 
@@ -95,8 +95,7 @@
             "\tat com.example.Main.main(Test.java:10)",
             "dex2oat I 10-30 11:41:40 232588 232588 dex2oat.cc:2808] dex2oat took 94.860ms"
                 + " (71.941ms cpu) (threads: 72) arena alloc=3KB (3312B) java alloc=32KB (32800B)"
-                + " native alloc=440KB (450720B) free=9MB (9539424B)"
-            );
+                + " native alloc=440KB (450720B) free=9MB (9539424B)");
     checkStackTrace(StackTrace.extractFromArt(stderr, DexVm.ART_5_1_1_HOST));
   }
 
diff --git a/src/test/java/com/android/tools/r8/utils/Smali.java b/src/test/java/com/android/tools/r8/utils/Smali.java
index 693af00..26e85e5 100644
--- a/src/test/java/com/android/tools/r8/utils/Smali.java
+++ b/src/test/java/com/android/tools/r8/utils/Smali.java
@@ -79,7 +79,7 @@
 
       if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) {
         throw new RuntimeException(
-            "Error occured while compiling text:\n" + StringUtils.join(smaliTexts, "\n"));
+            "Error occured while compiling text:\n" + StringUtils.join("\n", smaliTexts));
       }
 
       CommonTree t = result.getTree();
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java
index dfccf5a..a3f6892 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java
@@ -352,8 +352,10 @@
     return dexMethod.method.name.toString()
         + "("
         + StringUtils.join(
+            "",
             Arrays.stream(dexMethod.method.proto.parameters.values)
-                .map(DexType::toDescriptorString).collect(Collectors.toList()), "")
+                .map(DexType::toDescriptorString)
+                .collect(Collectors.toList()))
         + ")"
         + dexMethod.method.proto.returnType.toDescriptorString();
   }