[Retrace] Ensure we keep kept interface in retrace jar
Change-Id: Ifb424f2cffc783b34555850f5e06e3bd96a27259
diff --git a/src/main/java/com/android/tools/r8/references/ArrayReference.java b/src/main/java/com/android/tools/r8/references/ArrayReference.java
index 919bbd7..a54d694 100644
--- a/src/main/java/com/android/tools/r8/references/ArrayReference.java
+++ b/src/main/java/com/android/tools/r8/references/ArrayReference.java
@@ -6,10 +6,12 @@
import com.android.tools.r8.Keep;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
import java.util.Objects;
/** Reference to an array type. */
@Keep
+@KeepForRetraceApi
public final class ArrayReference implements TypeReference {
private final int dimensions;
diff --git a/src/main/java/com/android/tools/r8/references/ClassReference.java b/src/main/java/com/android/tools/r8/references/ClassReference.java
index 3e30319..b8da051 100644
--- a/src/main/java/com/android/tools/r8/references/ClassReference.java
+++ b/src/main/java/com/android/tools/r8/references/ClassReference.java
@@ -5,9 +5,11 @@
import com.android.tools.r8.Keep;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
/** Reference to a class type or interface type. */
@Keep
+@KeepForRetraceApi
public final class ClassReference implements TypeReference {
private final String descriptor;
diff --git a/src/main/java/com/android/tools/r8/references/FieldReference.java b/src/main/java/com/android/tools/r8/references/FieldReference.java
index d4d74fd..089ee84 100644
--- a/src/main/java/com/android/tools/r8/references/FieldReference.java
+++ b/src/main/java/com/android/tools/r8/references/FieldReference.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.references;
import com.android.tools.r8.Keep;
+import com.android.tools.r8.utils.KeepForRetraceApi;
import java.util.Objects;
/**
@@ -13,6 +14,7 @@
* type of the field.
*/
@Keep
+@KeepForRetraceApi
public final class FieldReference {
private final ClassReference holderClass;
private final String fieldName;
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 fc8f183..2624dde 100644
--- a/src/main/java/com/android/tools/r8/references/MethodReference.java
+++ b/src/main/java/com/android/tools/r8/references/MethodReference.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.references;
import com.android.tools.r8.Keep;
+import com.android.tools.r8.utils.KeepForRetraceApi;
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.StringUtils.BraceType;
@@ -17,6 +18,7 @@
* full list of formal parameters.
*/
@Keep
+@KeepForRetraceApi
public final class MethodReference {
private final ClassReference holderClass;
private final String methodName;
diff --git a/src/main/java/com/android/tools/r8/references/PackageReference.java b/src/main/java/com/android/tools/r8/references/PackageReference.java
index b2474fe..b964e6d 100644
--- a/src/main/java/com/android/tools/r8/references/PackageReference.java
+++ b/src/main/java/com/android/tools/r8/references/PackageReference.java
@@ -6,10 +6,12 @@
import com.android.tools.r8.Keep;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
import java.util.Objects;
/** Reference to a package. */
@Keep
+@KeepForRetraceApi
public class PackageReference {
private final String packageName;
diff --git a/src/main/java/com/android/tools/r8/references/PrimitiveReference.java b/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
index eb4ae72..da0fc0f 100644
--- a/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
+++ b/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
@@ -5,8 +5,10 @@
import com.android.tools.r8.Keep;
import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.utils.KeepForRetraceApi;
@Keep
+@KeepForRetraceApi
public abstract class PrimitiveReference implements TypeReference {
static final PrimitiveReference BOOL =
diff --git a/src/main/java/com/android/tools/r8/references/Reference.java b/src/main/java/com/android/tools/r8/references/Reference.java
index e6a829b..2faddb6 100644
--- a/src/main/java/com/android/tools/r8/references/Reference.java
+++ b/src/main/java/com/android/tools/r8/references/Reference.java
@@ -5,6 +5,7 @@
import com.android.tools.r8.Keep;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
import com.google.common.collect.ImmutableList;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
@@ -22,6 +23,7 @@
* <p>No guarantees are made on identity and all references must be compared by {@code equals}.
*/
@Keep
+@KeepForRetraceApi
public final class Reference {
public static PrimitiveReference BOOL = PrimitiveReference.BOOL;
diff --git a/src/main/java/com/android/tools/r8/references/TypeReference.java b/src/main/java/com/android/tools/r8/references/TypeReference.java
index bfef3f6..43d4dc7 100644
--- a/src/main/java/com/android/tools/r8/references/TypeReference.java
+++ b/src/main/java/com/android/tools/r8/references/TypeReference.java
@@ -5,8 +5,10 @@
import com.android.tools.r8.Keep;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
@Keep
+@KeepForRetraceApi
public interface TypeReference {
/**
diff --git a/src/main/java/com/android/tools/r8/utils/KeepForRetraceApi.java b/src/main/java/com/android/tools/r8/utils/KeepForRetraceApi.java
new file mode 100644
index 0000000..3f59392
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/utils/KeepForRetraceApi.java
@@ -0,0 +1,8 @@
+// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.utils;
+
+@KeepForRetraceApi
+public @interface KeepForRetraceApi {}