Fix KeepInfoCollectionExported export and import
Change-Id: I3ce163d7cda1eebbf30181610919ba20ec4bec07
diff --git a/src/main/java/com/android/tools/r8/shaking/KeepInfoCollectionExported.java b/src/main/java/com/android/tools/r8/shaking/KeepInfoCollectionExported.java
index 3c5e311..1350d9e 100644
--- a/src/main/java/com/android/tools/r8/shaking/KeepInfoCollectionExported.java
+++ b/src/main/java/com/android/tools/r8/shaking/KeepInfoCollectionExported.java
@@ -177,7 +177,9 @@
String methodName = holderAndName.substring(nameIndex + 1);
String[] argStrings = substring.substring(brace + 1, substring.length() - 1).split(", ");
TypeReference[] args =
- ArrayUtils.map(argStrings, Reference::typeFromTypeName, new TypeReference[0]);
+ argStrings.length == 1 && argStrings[0].isEmpty()
+ ? new TypeReference[0]
+ : ArrayUtils.map(argStrings, Reference::typeFromTypeName, new TypeReference[0]);
return Reference.method(holder, methodName, Arrays.asList(args), returnType);
}
diff --git a/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java b/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java
index 3a21792..597b016 100644
--- a/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java
+++ b/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java
@@ -344,7 +344,6 @@
&& parameterAnnotationsInfo == other.internalParameterAnnotationsInfo();
}
-
@Override
public int hashCodeNoAnnotations() {
assert parameterAnnotationsInfo.isTopOrBottom();
diff --git a/src/test/java/com/android/tools/r8/assistant/JavaLangClassJsonTest.java b/src/test/java/com/android/tools/r8/assistant/JavaLangClassJsonTest.java
index 963ea23..5e1fbf8 100644
--- a/src/test/java/com/android/tools/r8/assistant/JavaLangClassJsonTest.java
+++ b/src/test/java/com/android/tools/r8/assistant/JavaLangClassJsonTest.java
@@ -24,6 +24,7 @@
import com.android.tools.r8.shaking.KeepInfoCollectionExported;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.Box;
+import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -206,6 +207,13 @@
assertTrue(updater22.isKeptBy(keepInfoCollectionExported));
assertTrue(updater23.isKeptBy(keepInfoCollectionExported));
assertTrue(updater24.isKeptBy(keepInfoCollectionExported));
+
+ File folder = temp.newFolder();
+ keepInfoCollectionExported.exportToDirectory(folder.toPath());
+ KeepInfoCollectionExported keepInfoCollectionExported2 =
+ KeepInfoCollectionExported.parse(folder.toPath());
+
+ assertEquals(keepInfoCollectionExported, keepInfoCollectionExported2);
}
public static class Instrumentation extends ReflectiveOperationJsonLogger {