Replace all uses of @Keep/ForSubclassing in src by @KeepForApi
Bug: b/248408342
Change-Id: I1bfdcb884a9ae18a2d148266f93e8de68b2ea8f2
diff --git a/src/main/java/com/android/tools/r8/AndroidResourceConsumer.java b/src/main/java/com/android/tools/r8/AndroidResourceConsumer.java
index 634611f..23d7c2b 100644
--- a/src/main/java/com/android/tools/r8/AndroidResourceConsumer.java
+++ b/src/main/java/com/android/tools/r8/AndroidResourceConsumer.java
@@ -3,7 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
-@Keep
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
+@KeepForApi
public interface AndroidResourceConsumer {
void accept(AndroidResourceOutput androidResource, DiagnosticsHandler diagnosticsHandler);
diff --git a/src/main/java/com/android/tools/r8/AndroidResourceInput.java b/src/main/java/com/android/tools/r8/AndroidResourceInput.java
index 9dd3133..9403c75 100644
--- a/src/main/java/com/android/tools/r8/AndroidResourceInput.java
+++ b/src/main/java/com/android/tools/r8/AndroidResourceInput.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.io.InputStream;
/**
@@ -13,9 +14,10 @@
* allows us to reason about resources, and transitively other resources and code throughout the
* entire compilation pipeline.
*/
-@Keep
+@KeepForApi
public interface AndroidResourceInput extends Resource {
- @Keep
+
+ @KeepForApi
enum Kind {
// The AndroidManifest.xml file in proto format.
MANIFEST,
diff --git a/src/main/java/com/android/tools/r8/AndroidResourceOutput.java b/src/main/java/com/android/tools/r8/AndroidResourceOutput.java
index 6b204b5..ce7fc10 100644
--- a/src/main/java/com/android/tools/r8/AndroidResourceOutput.java
+++ b/src/main/java/com/android/tools/r8/AndroidResourceOutput.java
@@ -4,6 +4,8 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/**
* Base interface for android resources (resource table, manifest, res folder files)
*
@@ -11,7 +13,7 @@
* allows us to reason about resources, and transitively other resources and code throughout the
* entire compilation pipeline.
*/
-@Keep
+@KeepForApi
public interface AndroidResourceOutput extends Resource {
// The path, within the app, of the resource.
ResourcePath getPath();
diff --git a/src/main/java/com/android/tools/r8/AndroidResourceProvider.java b/src/main/java/com/android/tools/r8/AndroidResourceProvider.java
index cb44ff0..1045f70 100644
--- a/src/main/java/com/android/tools/r8/AndroidResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/AndroidResourceProvider.java
@@ -3,10 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.Collection;
/** Android resource provider. */
-@Keep
+@KeepForApi
public interface AndroidResourceProvider {
// Provide all android resources
diff --git a/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java b/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java
index dee63cc..d3ee009 100644
--- a/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java
+++ b/src/main/java/com/android/tools/r8/ArchiveClassFileProvider.java
@@ -8,6 +8,7 @@
import com.android.tools.r8.ProgramResource.Kind;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
@@ -36,7 +37,7 @@
* <p>The descriptor index is built eagerly upon creating the provider and subsequent requests for
* resources in the descriptor set will then force the read of zip entry contents.
*/
-@Keep
+@KeepForApi
public class ArchiveClassFileProvider implements ClassFileResourceProvider, Closeable {
private final Path archive;
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/ArchiveProgramResourceProvider.java b/src/main/java/com/android/tools/r8/ArchiveProgramResourceProvider.java
index d5dd240..1d98610 100644
--- a/src/main/java/com/android/tools/r8/ArchiveProgramResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/ArchiveProgramResourceProvider.java
@@ -5,6 +5,7 @@
import com.android.tools.r8.ProgramResource.Kind;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
@@ -27,14 +28,14 @@
import java.util.zip.ZipFile;
/** Provider for archives of program resources. */
-@KeepForSubclassing
+@KeepForApi
public class ArchiveProgramResourceProvider implements ProgramResourceProvider {
interface ArchiveEntryConsumer {
void accept(ArchiveEntryOrigin entry, InputStream stream) throws IOException;
}
- @KeepForSubclassing
+ @KeepForApi
public interface ZipFileSupplier {
ZipFile open() throws IOException;
}
diff --git a/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceConsumer.java b/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceConsumer.java
index f2c4b5d..9bb7f82 100644
--- a/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceConsumer.java
+++ b/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceConsumer.java
@@ -3,11 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.ArchiveBuilder;
import com.android.tools.r8.utils.OutputBuilder;
import java.nio.file.Path;
-@Keep
+@KeepForApi
public class ArchiveProtoAndroidResourceConsumer implements AndroidResourceConsumer {
private final OutputBuilder outputBuilder;
diff --git a/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceProvider.java b/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceProvider.java
index cacef7b..7af6e19 100644
--- a/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/ArchiveProtoAndroidResourceProvider.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.AndroidResourceInput.Kind;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.FileUtils;
@@ -26,7 +27,7 @@
* <p>The descriptor index is built eagerly upon creating the provider and subsequent requests for
* resources in the descriptor set will then force the read of zip entry contents.
*/
-@Keep
+@KeepForApi
public class ArchiveProtoAndroidResourceProvider implements AndroidResourceProvider {
private final Path archive;
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/AssertionsConfiguration.java b/src/main/java/com/android/tools/r8/AssertionsConfiguration.java
index 07513c9..a3c957b 100644
--- a/src/main/java/com/android/tools/r8/AssertionsConfiguration.java
+++ b/src/main/java/com/android/tools/r8/AssertionsConfiguration.java
@@ -4,11 +4,12 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.Reporter;
-@Keep
+@KeepForApi
public class AssertionsConfiguration {
private enum AssertionTransformation {
@@ -78,7 +79,7 @@
* <p>A builder is obtained by calling {@link
* BaseCompilerCommand.Builder#addAssertionsConfiguration}.
*/
- @Keep
+ @KeepForApi
public static class Builder {
Reporter reporter;
private AssertionTransformation transformation;
diff --git a/src/main/java/com/android/tools/r8/BackportedMethodList.java b/src/main/java/com/android/tools/r8/BackportedMethodList.java
index f6644c9..1398cd5 100644
--- a/src/main/java/com/android/tools/r8/BackportedMethodList.java
+++ b/src/main/java/com/android/tools/r8/BackportedMethodList.java
@@ -6,6 +6,7 @@
import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.DesugaredMethodsList;
import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.DesugaredMethodsListCommand;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.ExceptionUtils;
import com.android.tools.r8.utils.StringUtils;
@@ -44,7 +45,7 @@
* The above generates the list of backported methods for a compilation with a min API of <code>
* apiLevel</code> into the file <code>methods-list.txt</code>.
*/
-@Keep
+@KeepForApi
public class BackportedMethodList {
static final String USAGE_MESSAGE =
diff --git a/src/main/java/com/android/tools/r8/BackportedMethodListCommand.java b/src/main/java/com/android/tools/r8/BackportedMethodListCommand.java
index 1558357..485dd4f 100644
--- a/src/main/java/com/android/tools/r8/BackportedMethodListCommand.java
+++ b/src/main/java/com/android/tools/r8/BackportedMethodListCommand.java
@@ -7,6 +7,7 @@
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecification;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecificationParser;
import com.android.tools.r8.ir.desugar.desugaredlibrary.humanspecification.HumanDesugaredLibrarySpecification;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
@@ -35,7 +36,7 @@
* .build();
* </pre>
*/
-@Keep
+@KeepForApi
public class BackportedMethodListCommand {
private final boolean printHelp;
@@ -184,7 +185,7 @@
builder.setMinApiLevel(minApi);
}
- @Keep
+ @KeepForApi
public static class Builder {
private final Reporter reporter;
diff --git a/src/main/java/com/android/tools/r8/BaseCommand.java b/src/main/java/com/android/tools/r8/BaseCommand.java
index dd6a740..cc4cffe 100644
--- a/src/main/java/com/android/tools/r8/BaseCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCommand.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.AbortException;
@@ -29,7 +30,7 @@
* <p>For concrete builders, see for example {@link D8Command.Builder} and {@link
* R8Command.Builder}.
*/
-@Keep
+@KeepForApi
public abstract class BaseCommand {
private final boolean printHelp;
@@ -103,7 +104,7 @@
* @param <B> Concrete builder extending this base, e.g., {@link R8Command.Builder} or {@link
* D8Command.Builder}.
*/
- @Keep
+ @KeepForApi
public abstract static class Builder<C extends BaseCommand, B extends Builder<C, B>> {
private final Reporter reporter;
diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index 650ff31..c67603b 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -11,6 +11,7 @@
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecification;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecificationParser;
import com.android.tools.r8.ir.desugar.desugaredlibrary.humanspecification.HumanDesugaredLibrarySpecification;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.profile.art.ArtProfileConsumer;
import com.android.tools.r8.profile.art.ArtProfileForRewriting;
@@ -44,7 +45,7 @@
* <p>For concrete builders, see for example {@link D8Command.Builder} and {@link
* R8Command.Builder}.
*/
-@Keep
+@KeepForApi
public abstract class BaseCompilerCommand extends BaseCommand {
private final CompilationMode mode;
@@ -268,7 +269,7 @@
* @param <B> Concrete builder extending this base, e.g., {@link R8Command.Builder} or {@link
* D8Command.Builder}.
*/
- @Keep
+ @KeepForApi
public abstract static class Builder<C extends BaseCompilerCommand, B extends Builder<C, B>>
extends BaseCommand.Builder<C, B> {
diff --git a/src/main/java/com/android/tools/r8/ByteBufferProvider.java b/src/main/java/com/android/tools/r8/ByteBufferProvider.java
index cf80266..495c4f6 100644
--- a/src/main/java/com/android/tools/r8/ByteBufferProvider.java
+++ b/src/main/java/com/android/tools/r8/ByteBufferProvider.java
@@ -3,10 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.nio.ByteBuffer;
/** Interface to enable manual memory management for a pool of byte buffers. */
-@KeepForSubclassing
+@KeepForApi
public interface ByteBufferProvider {
/**
diff --git a/src/main/java/com/android/tools/r8/ByteDataView.java b/src/main/java/com/android/tools/r8/ByteDataView.java
index 65afbb1..6c6af5a 100644
--- a/src/main/java/com/android/tools/r8/ByteDataView.java
+++ b/src/main/java/com/android/tools/r8/ByteDataView.java
@@ -3,10 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.Arrays;
/** Byte data view of a buffer that is possibly larger than the data content. */
-@Keep
+@KeepForApi
public final class ByteDataView {
private byte[] buffer;
private final int offset;
diff --git a/src/main/java/com/android/tools/r8/CancelCompilationChecker.java b/src/main/java/com/android/tools/r8/CancelCompilationChecker.java
index f08cde1..71c1248 100644
--- a/src/main/java/com/android/tools/r8/CancelCompilationChecker.java
+++ b/src/main/java/com/android/tools/r8/CancelCompilationChecker.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Client supplied checker to allow cancelling a compilation before completion. */
-@Keep
+@KeepForApi
public interface CancelCompilationChecker {
/**
diff --git a/src/main/java/com/android/tools/r8/ClassConflictResolver.java b/src/main/java/com/android/tools/r8/ClassConflictResolver.java
index 8136f17..7dc1a65 100644
--- a/src/main/java/com/android/tools/r8/ClassConflictResolver.java
+++ b/src/main/java/com/android/tools/r8/ClassConflictResolver.java
@@ -3,11 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.references.ClassReference;
import java.util.Collection;
-@Keep
+@KeepForApi
public interface ClassConflictResolver {
/**
diff --git a/src/main/java/com/android/tools/r8/ClassFileConsumer.java b/src/main/java/com/android/tools/r8/ClassFileConsumer.java
index fa3e5c4..ac8effc 100644
--- a/src/main/java/com/android/tools/r8/ClassFileConsumer.java
+++ b/src/main/java/com/android/tools/r8/ClassFileConsumer.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.ArchiveBuilder;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.DirectoryBuilder;
@@ -24,7 +25,7 @@
*
* <p>This consumer can only be provided to R8.
*/
-@KeepForSubclassing
+@KeepForApi
public interface ClassFileConsumer extends ProgramConsumer {
/**
@@ -51,7 +52,7 @@
}
/** Forwarding consumer to delegate to an optional existing consumer. */
- @Keep
+ @KeepForApi
class ForwardingConsumer implements ClassFileConsumer {
private static final ClassFileConsumer EMPTY_CONSUMER = new ForwardingConsumer(null);
@@ -83,7 +84,7 @@
}
/** Consumer to write program resources to an output. */
- @Keep
+ @KeepForApi
class ArchiveConsumer extends ForwardingConsumer
implements DataResourceConsumer, InternalProgramOutputPathConsumer {
private final OutputBuilder outputBuilder;
@@ -164,7 +165,7 @@
}
/** Directory consumer to write program resources to a directory. */
- @Keep
+ @KeepForApi
class DirectoryConsumer extends ForwardingConsumer implements InternalProgramOutputPathConsumer {
private final OutputBuilder outputBuilder;
protected final boolean consumeDataResouces;
diff --git a/src/main/java/com/android/tools/r8/ClassFileResourceProvider.java b/src/main/java/com/android/tools/r8/ClassFileResourceProvider.java
index ab6a79d..a8c4a65 100644
--- a/src/main/java/com/android/tools/r8/ClassFileResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/ClassFileResourceProvider.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.io.IOException;
import java.util.Set;
@@ -13,7 +14,7 @@
* only created on-demand when they are needed by the compiler. If never needed, the resource will
* never be loaded.
*/
-@KeepForSubclassing
+@KeepForApi
public interface ClassFileResourceProvider {
/**
diff --git a/src/main/java/com/android/tools/r8/CompatProguardCommandBuilder.java b/src/main/java/com/android/tools/r8/CompatProguardCommandBuilder.java
index 80f679b..3084ee0 100644
--- a/src/main/java/com/android/tools/r8/CompatProguardCommandBuilder.java
+++ b/src/main/java/com/android/tools/r8/CompatProguardCommandBuilder.java
@@ -4,8 +4,10 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
// This class is used by the Android Studio Gradle plugin and is thus part of the R8 API.
-@Keep
+@KeepForApi
public class CompatProguardCommandBuilder extends R8Command.Builder {
public CompatProguardCommandBuilder() {
this(true);
diff --git a/src/main/java/com/android/tools/r8/CompilationFailedException.java b/src/main/java/com/android/tools/r8/CompilationFailedException.java
index d618dff..033b1da 100644
--- a/src/main/java/com/android/tools/r8/CompilationFailedException.java
+++ b/src/main/java/com/android/tools/r8/CompilationFailedException.java
@@ -3,11 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/**
* Exception thrown when compilation failed to complete because of errors previously reported
* through {@link com.android.tools.r8.DiagnosticsHandler}.
*/
-@Keep
+@KeepForApi
public class CompilationFailedException extends Exception {
private final boolean cancelled;
diff --git a/src/main/java/com/android/tools/r8/CompilationMode.java b/src/main/java/com/android/tools/r8/CompilationMode.java
index 9288a35..8adcb59 100644
--- a/src/main/java/com/android/tools/r8/CompilationMode.java
+++ b/src/main/java/com/android/tools/r8/CompilationMode.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Compilation mode. */
-@Keep
+@KeepForApi
public enum CompilationMode {
/** Preserves debugging information during compilation, eg, line-numbers and locals. */
DEBUG,
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index 36080ca..55a8199 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -28,6 +28,7 @@
import com.android.tools.r8.ir.optimize.AssertionsRewriter;
import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackSimple;
import com.android.tools.r8.jar.CfApplicationWriter;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.kotlin.KotlinMetadataRewriter;
import com.android.tools.r8.naming.NamingLens;
import com.android.tools.r8.naming.PrefixRewritingNamingLens;
@@ -80,7 +81,7 @@
* them to DEX bytecode (compiling from Java bytecode for such inputs and merging for DEX inputs),
* and then writes the result to the directory or zip archive specified by {@code outputPath}.
*/
-@Keep
+@KeepForApi
public final class D8 {
private D8() {}
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index c210df5..211dfb5 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.inspector.Inspector;
import com.android.tools.r8.inspector.internal.InspectorImpl;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecification;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.MapConsumer;
import com.android.tools.r8.naming.ProguardMapStringConsumer;
import com.android.tools.r8.origin.Origin;
@@ -60,7 +61,7 @@
* .build();
* </pre>
*/
-@Keep
+@KeepForApi
public final class D8Command extends BaseCompilerCommand {
private static class DefaultD8DiagnosticsHandler implements DiagnosticsHandler {
@@ -85,7 +86,7 @@
*
* <p>A builder is obtained by calling {@link D8Command#builder}.
*/
- @Keep
+ @KeepForApi
public static class Builder extends BaseCompilerCommand.Builder<D8Command, Builder> {
private boolean intermediate = false;
diff --git a/src/main/java/com/android/tools/r8/DataDirectoryResource.java b/src/main/java/com/android/tools/r8/DataDirectoryResource.java
index ed944ae..78a0d49 100644
--- a/src/main/java/com/android/tools/r8/DataDirectoryResource.java
+++ b/src/main/java/com/android/tools/r8/DataDirectoryResource.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
@@ -12,7 +13,7 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-@Keep
+@KeepForApi
public interface DataDirectoryResource extends DataResource {
static DataDirectoryResource fromName(String name, Origin origin) {
diff --git a/src/main/java/com/android/tools/r8/DataEntryResource.java b/src/main/java/com/android/tools/r8/DataEntryResource.java
index 855b7a1..e5c01cb 100644
--- a/src/main/java/com/android/tools/r8/DataEntryResource.java
+++ b/src/main/java/com/android/tools/r8/DataEntryResource.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
@@ -16,7 +17,7 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-@Keep
+@KeepForApi
public interface DataEntryResource extends DataResource {
/** Get the bytes of the data entry resource. */
diff --git a/src/main/java/com/android/tools/r8/DataResource.java b/src/main/java/com/android/tools/r8/DataResource.java
index eac8b6c..6c9763f 100644
--- a/src/main/java/com/android/tools/r8/DataResource.java
+++ b/src/main/java/com/android/tools/r8/DataResource.java
@@ -3,7 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
-@Keep
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
+@KeepForApi
public interface DataResource extends Resource {
char SEPARATOR = '/';
diff --git a/src/main/java/com/android/tools/r8/DataResourceConsumer.java b/src/main/java/com/android/tools/r8/DataResourceConsumer.java
index e306b9b..2a8880d 100644
--- a/src/main/java/com/android/tools/r8/DataResourceConsumer.java
+++ b/src/main/java/com/android/tools/r8/DataResourceConsumer.java
@@ -3,7 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
-@KeepForSubclassing
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
+@KeepForApi
public interface DataResourceConsumer {
void accept(DataDirectoryResource directory, DiagnosticsHandler diagnosticsHandler);
diff --git a/src/main/java/com/android/tools/r8/DataResourceProvider.java b/src/main/java/com/android/tools/r8/DataResourceProvider.java
index 5e0a24f..ad77718 100644
--- a/src/main/java/com/android/tools/r8/DataResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/DataResourceProvider.java
@@ -3,10 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
-@KeepForSubclassing
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
+@KeepForApi
public interface DataResourceProvider {
- @KeepForSubclassing
+ @KeepForApi
interface Visitor {
void visit(DataDirectoryResource directory);
void visit(DataEntryResource file);
diff --git a/src/main/java/com/android/tools/r8/DesugarGraphConsumer.java b/src/main/java/com/android/tools/r8/DesugarGraphConsumer.java
index fd553b3..a50230b 100644
--- a/src/main/java/com/android/tools/r8/DesugarGraphConsumer.java
+++ b/src/main/java/com/android/tools/r8/DesugarGraphConsumer.java
@@ -3,10 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
/** Consumer for receiving dependency edges for desugaring. */
-@KeepForSubclassing
+@KeepForApi
public interface DesugarGraphConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java
index 1675cb2..55f1936 100644
--- a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java
+++ b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java
@@ -5,6 +5,7 @@
import static com.android.tools.r8.utils.FileUtils.DEX_EXTENSION;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.ArchiveBuilder;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.DirectoryBuilder;
@@ -31,7 +32,7 @@
*
* <p>This consumer receives DEX file content for each Java class-file input.
*/
-@KeepForSubclassing
+@KeepForApi
public interface DexFilePerClassFileConsumer extends ProgramConsumer, ByteBufferProvider {
static final boolean SHOULD_COMBINE_SYNTHETIC_CLASSES = true;
@@ -93,7 +94,7 @@
}
/** Forwarding consumer to delegate to an optional existing consumer. */
- @Keep
+ @KeepForApi
class ForwardingConsumer implements DexFilePerClassFileConsumer {
private static final DexFilePerClassFileConsumer EMPTY_CONSUMER = new ForwardingConsumer(null);
@@ -138,7 +139,7 @@
}
/** Consumer to write program resources to an output. */
- @Keep
+ @KeepForApi
class ArchiveConsumer extends ForwardingConsumer
implements DataResourceConsumer, InternalProgramOutputPathConsumer {
private final OutputBuilder outputBuilder;
@@ -231,7 +232,7 @@
}
/** Directory consumer to write program resources to a directory. */
- @Keep
+ @KeepForApi
class DirectoryConsumer extends ForwardingConsumer
implements DataResourceConsumer, InternalProgramOutputPathConsumer {
private final OutputBuilder outputBuilder;
diff --git a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
index 39f5b2e..9e7c06b 100644
--- a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
+++ b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.ArchiveBuilder;
@@ -34,7 +35,7 @@
* <p>This consumer receives DEX file content using standard indexed-multidex for programs larger
* than a single DEX file. This is the default consumer for DEX programs.
*/
-@KeepForSubclassing
+@KeepForApi
public interface DexIndexedConsumer extends ProgramConsumer, ByteBufferProvider {
/**
@@ -78,7 +79,7 @@
}
/** Forwarding consumer to delegate to an optional existing consumer. */
- @Keep
+ @KeepForApi
class ForwardingConsumer implements DexIndexedConsumer {
private static final DexIndexedConsumer EMPTY_CONSUMER = new ForwardingConsumer(null);
@@ -111,7 +112,7 @@
}
/** Consumer to write program resources to an output. */
- @Keep
+ @KeepForApi
class ArchiveConsumer extends ForwardingConsumer
implements DataResourceConsumer, InternalProgramOutputPathConsumer {
protected final OutputBuilder outputBuilder;
@@ -211,7 +212,7 @@
}
}
- @Keep
+ @KeepForApi
class DirectoryConsumer extends ForwardingConsumer
implements DataResourceConsumer, InternalProgramOutputPathConsumer {
private final Path directory;
diff --git a/src/main/java/com/android/tools/r8/Diagnostic.java b/src/main/java/com/android/tools/r8/Diagnostic.java
index 3184d54..bf05be1 100644
--- a/src/main/java/com/android/tools/r8/Diagnostic.java
+++ b/src/main/java/com/android/tools/r8/Diagnostic.java
@@ -3,13 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-/**
- * Interface for all diagnostic message produced by D8 and R8.
- */
-@Keep
+/** Interface for all diagnostic message produced by D8 and R8. */
+@KeepForApi
public interface Diagnostic {
/**
diff --git a/src/main/java/com/android/tools/r8/DiagnosticsHandler.java b/src/main/java/com/android/tools/r8/DiagnosticsHandler.java
index a332327..88ad2c8 100644
--- a/src/main/java/com/android/tools/r8/DiagnosticsHandler.java
+++ b/src/main/java/com/android/tools/r8/DiagnosticsHandler.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import java.io.PrintStream;
@@ -12,7 +13,7 @@
*
* <p>During compilation the warning and info methods will be called.
*/
-@Keep
+@KeepForApi
public interface DiagnosticsHandler {
/** Should be considered private. */
diff --git a/src/main/java/com/android/tools/r8/DiagnosticsLevel.java b/src/main/java/com/android/tools/r8/DiagnosticsLevel.java
index a022b0d..9497a86 100644
--- a/src/main/java/com/android/tools/r8/DiagnosticsLevel.java
+++ b/src/main/java/com/android/tools/r8/DiagnosticsLevel.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Levels of diagnostics messages reported by the compiler. */
-@Keep
+@KeepForApi
public enum DiagnosticsLevel {
ERROR,
WARNING,
diff --git a/src/main/java/com/android/tools/r8/DirectoryClassFileProvider.java b/src/main/java/com/android/tools/r8/DirectoryClassFileProvider.java
index 50aff3f..53f15ba 100644
--- a/src/main/java/com/android/tools/r8/DirectoryClassFileProvider.java
+++ b/src/main/java/com/android/tools/r8/DirectoryClassFileProvider.java
@@ -7,6 +7,7 @@
import static com.android.tools.r8.utils.FileUtils.isClassFile;
import com.android.tools.r8.ProgramResource.Kind;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.DescriptorUtils;
import com.google.common.collect.Sets;
import java.io.File;
@@ -15,11 +16,8 @@
import java.util.HashSet;
import java.util.Set;
-/**
- * Lazy resource provider returning class file resources based
- * on filesystem directory content.
- */
-@Keep
+/** Lazy resource provider returning class file resources based on filesystem directory content. */
+@KeepForApi
public final class DirectoryClassFileProvider implements ClassFileResourceProvider {
private final Path root;
diff --git a/src/main/java/com/android/tools/r8/ExtractMarker.java b/src/main/java/com/android/tools/r8/ExtractMarker.java
index 79ec8a5..99080f9 100644
--- a/src/main/java/com/android/tools/r8/ExtractMarker.java
+++ b/src/main/java/com/android/tools/r8/ExtractMarker.java
@@ -8,6 +8,7 @@
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.dex.Marker;
import com.android.tools.r8.graph.DexApplication;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
@@ -37,7 +38,7 @@
* .build());
* </pre>
*/
-@Keep
+@KeepForApi
public class ExtractMarker {
private static class MarkerInfoPrintConsumer implements MarkerInfoConsumer {
diff --git a/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java b/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java
index 831530f..c6d1968 100644
--- a/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java
+++ b/src/main/java/com/android/tools/r8/ExtractMarkerCommand.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.Pair;
@@ -17,11 +18,11 @@
import java.util.function.BiConsumer;
/** Immutable command structure for an invocation of the {@link ExtractMarker} tool. */
-@Keep
+@KeepForApi
public class ExtractMarkerCommand {
/** Builder for constructing a {@link ExtractMarkerCommand}. */
- @Keep
+ @KeepForApi
public static class Builder {
private boolean printHelp = false;
private final List<Path> programFiles = new ArrayList<>();
diff --git a/src/main/java/com/android/tools/r8/FeatureSplit.java b/src/main/java/com/android/tools/r8/FeatureSplit.java
index 08f54e6..97e6cb2 100644
--- a/src/main/java/com/android/tools/r8/FeatureSplit.java
+++ b/src/main/java/com/android/tools/r8/FeatureSplit.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.ArrayList;
import java.util.List;
@@ -27,7 +28,7 @@
* .build();
* </pre>
*/
-@Keep
+@KeepForApi
public class FeatureSplit {
public static final FeatureSplit BASE =
@@ -85,7 +86,7 @@
*
* <p>A builder is obtained by calling addFeatureSplit on a {@link R8Command.Builder}.
*/
- @Keep
+ @KeepForApi
public static class Builder {
private ProgramConsumer programConsumer;
private final List<ProgramResourceProvider> programResourceProviders = new ArrayList<>();
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexList.java b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
index 182d156..6f51728 100644
--- a/src/main/java/com/android/tools/r8/GenerateMainDexList.java
+++ b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
@@ -16,6 +16,7 @@
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexProgramClass;
import com.android.tools.r8.graph.SubtypingInfo;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.profile.rewriting.ProfileCollectionAdditions;
import com.android.tools.r8.shaking.Enqueuer;
import com.android.tools.r8.shaking.EnqueuerFactory;
@@ -35,7 +36,7 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
-@Keep
+@KeepForApi
public class GenerateMainDexList {
private final Timing timing = new Timing("maindex");
private final InternalOptions options;
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java b/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
index 337fad7..b782e91 100644
--- a/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
+++ b/src/main/java/com/android/tools/r8/GenerateMainDexListCommand.java
@@ -5,6 +5,7 @@
import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
import com.android.tools.r8.graph.DexItemFactory;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.CommandLineOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.shaking.ProguardConfigurationParser;
@@ -23,7 +24,7 @@
import java.util.ArrayList;
import java.util.List;
-@Keep
+@KeepForApi
public class GenerateMainDexListCommand extends BaseCommand {
private final List<ProguardConfigurationRule> mainDexKeepRules;
@@ -32,7 +33,7 @@
private final DexItemFactory factory;
private final Reporter reporter;
- @Keep
+ @KeepForApi
public static class Builder extends BaseCommand.Builder<GenerateMainDexListCommand, Builder> {
private final DexItemFactory factory = new DexItemFactory();
diff --git a/src/main/java/com/android/tools/r8/GlobalSyntheticsConsumer.java b/src/main/java/com/android/tools/r8/GlobalSyntheticsConsumer.java
index 1f982ce..88e9f55 100644
--- a/src/main/java/com/android/tools/r8/GlobalSyntheticsConsumer.java
+++ b/src/main/java/com/android/tools/r8/GlobalSyntheticsConsumer.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
/**
@@ -18,7 +19,7 @@
* application. It is valid to merge just the globals in such a final step. See {@code
* GlobalSyntheticsResourceProvider}.
*/
-@Keep
+@KeepForApi
public interface GlobalSyntheticsConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java b/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java
index ef754ba..c9590ea 100644
--- a/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java
+++ b/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java
@@ -39,6 +39,7 @@
import com.android.tools.r8.ir.desugar.records.RecordDesugaring;
import com.android.tools.r8.ir.desugar.varhandle.VarHandleDesugaring;
import com.android.tools.r8.ir.desugar.varhandle.VarHandleDesugaringEventConsumer;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.RecordRewritingNamingLens;
import com.android.tools.r8.naming.VarHandleDesugaringRewritingNamingLens;
import com.android.tools.r8.origin.CommandLineOrigin;
@@ -68,7 +69,7 @@
* The GlobalSyntheticsGenerator, a tool for generating a dex file for all possible global
* synthetics.
*/
-@Keep
+@KeepForApi
public class GlobalSyntheticsGenerator {
@SuppressWarnings("ReferenceEquality")
diff --git a/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java b/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java
index 1d85164..44f54ba 100644
--- a/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java
+++ b/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java
@@ -8,6 +8,7 @@
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.errors.DexFileOverflowDiagnostic;
import com.android.tools.r8.graph.DexItemFactory;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AbortException;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -25,7 +26,7 @@
/**
* Immutable command structure for an invocation of the {@link GlobalSyntheticsGenerator} compiler.
*/
-@Keep
+@KeepForApi
public final class GlobalSyntheticsGeneratorCommand {
private final ProgramConsumer programConsumer;
@@ -152,7 +153,7 @@
*
* <p>A builder is obtained by calling {@link GlobalSyntheticsGeneratorCommand#builder}.
*/
- @Keep
+ @KeepForApi
public static class Builder {
private ProgramConsumer programConsumer = null;
diff --git a/src/main/java/com/android/tools/r8/GlobalSyntheticsResourceProvider.java b/src/main/java/com/android/tools/r8/GlobalSyntheticsResourceProvider.java
index 4cfdbb1..73a0841 100644
--- a/src/main/java/com/android/tools/r8/GlobalSyntheticsResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/GlobalSyntheticsResourceProvider.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import java.io.InputStream;
@@ -12,7 +13,7 @@
* <p>The global synthetic information can only be obtained by consuming it from a previous
* compilation unit for the same compiler version. See {@code GlobalSyntheticsConsumer}.
*/
-@Keep
+@KeepForApi
public interface GlobalSyntheticsResourceProvider {
/** Get the origin of the global synthetics resource. */
diff --git a/src/main/java/com/android/tools/r8/InputDependencyGraphConsumer.java b/src/main/java/com/android/tools/r8/InputDependencyGraphConsumer.java
index 20b0a30..9aa0b01 100644
--- a/src/main/java/com/android/tools/r8/InputDependencyGraphConsumer.java
+++ b/src/main/java/com/android/tools/r8/InputDependencyGraphConsumer.java
@@ -3,11 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import java.nio.file.Path;
/** Consumer for receiving file dependencies from inputs. */
-@KeepForSubclassing
+@KeepForApi
public interface InputDependencyGraphConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/JdkClassFileProvider.java b/src/main/java/com/android/tools/r8/JdkClassFileProvider.java
index bd40b44..28999a3 100644
--- a/src/main/java/com/android/tools/r8/JdkClassFileProvider.java
+++ b/src/main/java/com/android/tools/r8/JdkClassFileProvider.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.DescriptorUtils;
@@ -34,7 +35,7 @@
* <code>lib/rt.jar</code> will be loaded. JDK's of version 9 or higher system module classes will
* be loaded using <code>lib/jrt-fs.jar/<code>.
*/
-@Keep
+@KeepForApi
public class JdkClassFileProvider implements ClassFileResourceProvider, Closeable {
private Origin origin;
private final Set<String> descriptors = new HashSet<>();
diff --git a/src/main/java/com/android/tools/r8/KeepForSubclassing.java b/src/main/java/com/android/tools/r8/KeepForSubclassing.java
deleted file mode 100644
index 6e57114..0000000
--- a/src/main/java/com/android/tools/r8/KeepForSubclassing.java
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2018, 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;
-
-@Keep
-public @interface KeepForSubclassing {
-
-}
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index 7950354..1c1e64c 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -15,6 +15,7 @@
import com.android.tools.r8.ir.desugar.TypeRewriter;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryAmender;
import com.android.tools.r8.jar.CfApplicationWriter;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.PrefixRewritingNamingLens;
import com.android.tools.r8.naming.VarHandleDesugaringRewritingNamingLens;
import com.android.tools.r8.naming.signature.GenericSignatureRewriter;
@@ -34,10 +35,8 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
-/**
- * The L8 compiler.
- */
-@Keep
+/** The L8 compiler. */
+@KeepForApi
public class L8 {
/**
diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index 679dd95..664eae4 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.horizontalclassmerging.HorizontalClassMerger;
import com.android.tools.r8.inspector.Inspector;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecification;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.profile.art.ArtProfileForRewriting;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -37,7 +38,7 @@
import java.util.function.Consumer;
/** Immutable command structure for an invocation of the {@link L8} library compiler. */
-@Keep
+@KeepForApi
public final class L8Command extends BaseCompilerCommand {
private final D8Command d8Command;
@@ -252,7 +253,7 @@
*
* <p>A builder is obtained by calling {@link L8Command#builder}.
*/
- @Keep
+ @KeepForApi
public static class Builder extends BaseCompilerCommand.Builder<L8Command, Builder> {
private final List<Pair<List<String>, Origin>> proguardConfigStrings = new ArrayList<>();
diff --git a/src/main/java/com/android/tools/r8/MapIdEnvironment.java b/src/main/java/com/android/tools/r8/MapIdEnvironment.java
index f1e4260..7278811 100644
--- a/src/main/java/com/android/tools/r8/MapIdEnvironment.java
+++ b/src/main/java/com/android/tools/r8/MapIdEnvironment.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Environment made available when defining a custom map id for a build. */
-@Keep
+@KeepForApi
public interface MapIdEnvironment {
/** Get the computed hash for the mapping file content. */
diff --git a/src/main/java/com/android/tools/r8/MapIdProvider.java b/src/main/java/com/android/tools/r8/MapIdProvider.java
index 9af775f..576400d 100644
--- a/src/main/java/com/android/tools/r8/MapIdProvider.java
+++ b/src/main/java/com/android/tools/r8/MapIdProvider.java
@@ -3,6 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/**
* Interface for providing a custom map-id to the compiler.
*
@@ -11,7 +13,7 @@
* mapping file information for builds. For example, by including it in the source-file part of
* program stacktraces. See {@code SourceFileProvider}.
*/
-@Keep
+@KeepForApi
@FunctionalInterface
public interface MapIdProvider {
diff --git a/src/main/java/com/android/tools/r8/MarkerInfo.java b/src/main/java/com/android/tools/r8/MarkerInfo.java
index 6c5925d..91b8d9a 100644
--- a/src/main/java/com/android/tools/r8/MarkerInfo.java
+++ b/src/main/java/com/android/tools/r8/MarkerInfo.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Information present in a given marker. */
-@Keep
+@KeepForApi
public interface MarkerInfo {
/** Get the tool that has generated the marker. */
diff --git a/src/main/java/com/android/tools/r8/MarkerInfoConsumer.java b/src/main/java/com/android/tools/r8/MarkerInfoConsumer.java
index 87342e4..d52d1d5 100644
--- a/src/main/java/com/android/tools/r8/MarkerInfoConsumer.java
+++ b/src/main/java/com/android/tools/r8/MarkerInfoConsumer.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Interface for consumers of the marker information. */
-@Keep
+@KeepForApi
public interface MarkerInfoConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/MarkerInfoConsumerData.java b/src/main/java/com/android/tools/r8/MarkerInfoConsumerData.java
index 1b2d500..8640785 100644
--- a/src/main/java/com/android/tools/r8/MarkerInfoConsumerData.java
+++ b/src/main/java/com/android/tools/r8/MarkerInfoConsumerData.java
@@ -3,11 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import java.util.Collection;
/** Information about which markers are present in a given input. */
-@Keep
+@KeepForApi
public interface MarkerInfoConsumerData {
Origin getInputOrigin();
diff --git a/src/main/java/com/android/tools/r8/OutputMode.java b/src/main/java/com/android/tools/r8/OutputMode.java
index 7092479..4a76273 100644
--- a/src/main/java/com/android/tools/r8/OutputMode.java
+++ b/src/main/java/com/android/tools/r8/OutputMode.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Enumeration of the possible output formats of compilation. */
-@Keep
+@KeepForApi
public enum OutputMode {
/** Produce DEX files using standard indexed-multidex for programs larger that a single file. */
diff --git a/src/main/java/com/android/tools/r8/ParseFlagInfo.java b/src/main/java/com/android/tools/r8/ParseFlagInfo.java
index 93e6c02..a9566ed 100644
--- a/src/main/java/com/android/tools/r8/ParseFlagInfo.java
+++ b/src/main/java/com/android/tools/r8/ParseFlagInfo.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.List;
/**
@@ -11,7 +12,7 @@
* <p>Note that this information is purly for usage information and is not an exact semantics of
* flags.
*/
-@Keep
+@KeepForApi
public interface ParseFlagInfo {
/** Get the primary format description of the flag (including arguments). */
diff --git a/src/main/java/com/android/tools/r8/ParseFlagPrinter.java b/src/main/java/com/android/tools/r8/ParseFlagPrinter.java
index 3f30806..cc35672 100644
--- a/src/main/java/com/android/tools/r8/ParseFlagPrinter.java
+++ b/src/main/java/com/android/tools/r8/ParseFlagPrinter.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.StringUtils;
import java.util.ArrayList;
import java.util.List;
@@ -12,7 +13,7 @@
*
* <p>This utility can be used to support wrapping the compilers command-line interface.
*/
-@Keep
+@KeepForApi
public class ParseFlagPrinter {
private final List<ParseFlagInfo> flags = new ArrayList<>();
diff --git a/src/main/java/com/android/tools/r8/PartitionMapConsumer.java b/src/main/java/com/android/tools/r8/PartitionMapConsumer.java
index ea232d4..0fd3a7f 100644
--- a/src/main/java/com/android/tools/r8/PartitionMapConsumer.java
+++ b/src/main/java/com/android/tools/r8/PartitionMapConsumer.java
@@ -4,10 +4,11 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.MappingPartition;
import com.android.tools.r8.retrace.MappingPartitionMetadata;
-@Keep
+@KeepForApi
public interface PartitionMapConsumer extends Finishable {
void acceptMappingPartition(MappingPartition mappingPartition);
diff --git a/src/main/java/com/android/tools/r8/ProgramConsumer.java b/src/main/java/com/android/tools/r8/ProgramConsumer.java
index b3143a0..1b75bed 100644
--- a/src/main/java/com/android/tools/r8/ProgramConsumer.java
+++ b/src/main/java/com/android/tools/r8/ProgramConsumer.java
@@ -3,10 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/**
* Base for all program consumers to allow abstracting which concrete consumer is provided to D8/R8.
*/
-@KeepForSubclassing
+@KeepForApi
public interface ProgramConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/ProgramResource.java b/src/main/java/com/android/tools/r8/ProgramResource.java
index 671c2c3..7d2aead 100644
--- a/src/main/java/com/android/tools/r8/ProgramResource.java
+++ b/src/main/java/com/android/tools/r8/ProgramResource.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.StreamUtils;
@@ -16,16 +17,16 @@
/**
* Represents program application resources.
*
- * The content kind or format of a program resource can be either a Java class-file or an Android
- * DEX file. In both cases, the resource must be able to provide the content as a byte stream.
- * A resource may optionally include a set describing the class descriptors for each type that is
+ * <p>The content kind or format of a program resource can be either a Java class-file or an Android
+ * DEX file. In both cases, the resource must be able to provide the content as a byte stream. A
+ * resource may optionally include a set describing the class descriptors for each type that is
* defined by the resource.
*/
-@KeepForSubclassing
+@KeepForApi
public interface ProgramResource extends Resource {
/** Type of program-format kinds. */
- @Keep
+ @KeepForApi
enum Kind {
/** Format-kind for Java class-file resources. */
CF,
@@ -78,7 +79,7 @@
Set<String> getClassDescriptors();
/** File-based program resource. */
- @Keep
+ @KeepForApi
class FileResource implements ProgramResource {
private final Origin origin;
private final Kind kind;
@@ -127,7 +128,7 @@
}
/** Byte-content based program resource. */
- @Keep
+ @KeepForApi
class ByteResource implements ProgramResource {
private final Origin origin;
private final Kind kind;
diff --git a/src/main/java/com/android/tools/r8/ProgramResourceProvider.java b/src/main/java/com/android/tools/r8/ProgramResourceProvider.java
index b0620b1..f75e570 100644
--- a/src/main/java/com/android/tools/r8/ProgramResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/ProgramResourceProvider.java
@@ -3,11 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.io.IOException;
import java.util.Collection;
/** Program resource provider. */
-@KeepForSubclassing
+@KeepForApi
public interface ProgramResourceProvider {
Collection<ProgramResource> getProgramResources() throws ResourceException;
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 8be855e..d0264fc 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -58,6 +58,7 @@
import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackSimple;
import com.android.tools.r8.ir.optimize.templates.CfUtilityMethodsForCodeOptimizations;
import com.android.tools.r8.jar.CfApplicationWriter;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.kotlin.KotlinMetadataRewriter;
import com.android.tools.r8.kotlin.KotlinMetadataUtils;
import com.android.tools.r8.naming.IdentifierMinifier;
@@ -166,7 +167,7 @@
* them to DEX bytecode, using {@code androidJar} as the reference of the system runtime library,
* and then writes the result to the directory or zip archive specified by {@code outputPath}.
*/
-@Keep
+@KeepForApi
public class R8 {
private final Timing timing;
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index ebf4b9c..b4ac86e 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -16,6 +16,7 @@
import com.android.tools.r8.inspector.Inspector;
import com.android.tools.r8.inspector.internal.InspectorImpl;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecification;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.keepanno.asm.KeepEdgeReader;
import com.android.tools.r8.keepanno.ast.KeepDeclaration;
import com.android.tools.r8.keepanno.keeprules.KeepRuleExtractor;
@@ -86,7 +87,7 @@
* .build();
* </pre>
*/
-@Keep
+@KeepForApi
public final class R8Command extends BaseCompilerCommand {
/**
@@ -94,7 +95,7 @@
*
* <p>A builder is obtained by calling {@link R8Command#builder}.
*/
- @Keep
+ @KeepForApi
public static class Builder extends BaseCompilerCommand.Builder<R8Command, Builder> {
private static class DefaultR8DiagnosticsHandler implements DiagnosticsHandler {
diff --git a/src/main/java/com/android/tools/r8/Resource.java b/src/main/java/com/android/tools/r8/Resource.java
index 50c50cc..cadabb5 100644
--- a/src/main/java/com/android/tools/r8/Resource.java
+++ b/src/main/java/com/android/tools/r8/Resource.java
@@ -4,22 +4,23 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
/**
* Base interface for application resources.
*
- * Resources are inputs to the compilation that are provided from outside sources, e.g., the
- * command-line interface or API clients such as gradle. Each resource has an associated
- * {@link Origin} which is some opaque description of where the resource comes from. The D8/R8
- * compiler does not assume any particular structure of origin and does not rely on it for
- * compilation. The origin will be provided to diagnostics handlers so that they may detail what
- * resource was cause of some particular error.
+ * <p>Resources are inputs to the compilation that are provided from outside sources, e.g., the
+ * command-line interface or API clients such as gradle. Each resource has an associated {@link
+ * Origin} which is some opaque description of where the resource comes from. The D8/R8 compiler
+ * does not assume any particular structure of origin and does not rely on it for compilation. The
+ * origin will be provided to diagnostics handlers so that they may detail what resource was cause
+ * of some particular error.
*
- * The D8/R8 compilers uses default implementations for various file-system resources, but the
+ * <p>The D8/R8 compilers uses default implementations for various file-system resources, but the
* client is free to provide their own.
*/
-@KeepForSubclassing
+@KeepForApi
public interface Resource {
/**
* Get the origin of the resource.
diff --git a/src/main/java/com/android/tools/r8/ResourceException.java b/src/main/java/com/android/tools/r8/ResourceException.java
index 2726b92..48d5b81 100644
--- a/src/main/java/com/android/tools/r8/ResourceException.java
+++ b/src/main/java/com/android/tools/r8/ResourceException.java
@@ -3,15 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
/**
* Checked exception for resource related failures.
*
- * For example, this is the expected exception that must be thrown if a resource fails to produce
+ * <p>For example, this is the expected exception that must be thrown if a resource fails to produce
* its content. See {@link ProgramResource#getByteStream()} and {@link StringResource#getString()}.
*/
-@Keep
+@KeepForApi
public class ResourceException extends Exception {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/ResourcePath.java b/src/main/java/com/android/tools/r8/ResourcePath.java
index eab4d7e..dafa2ef 100644
--- a/src/main/java/com/android/tools/r8/ResourcePath.java
+++ b/src/main/java/com/android/tools/r8/ResourcePath.java
@@ -3,7 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
-@Keep
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
+@KeepForApi
public interface ResourcePath {
// The location within the apk, bundle or resource directory, e.g., res/xml/foo.xml
diff --git a/src/main/java/com/android/tools/r8/ResourceShrinker.java b/src/main/java/com/android/tools/r8/ResourceShrinker.java
index f23dddc..cbedb8f 100644
--- a/src/main/java/com/android/tools/r8/ResourceShrinker.java
+++ b/src/main/java/com/android/tools/r8/ResourceShrinker.java
@@ -47,6 +47,7 @@
import com.android.tools.r8.graph.DexValue;
import com.android.tools.r8.ir.code.SingleConstant;
import com.android.tools.r8.ir.code.WideConstant;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.utils.AndroidApp;
@@ -71,16 +72,17 @@
*
* <p>This class extracts all integer constants and string constants, which might refer to resource.
* More specifically, we look for the following while analyzing dex:
+ *
* <ul>
* <li>const instructions that might load integers or strings
- * <li>static fields that have an initial value. This initial value might be integer, string,
- * or array of integers.
+ * <li>static fields that have an initial value. This initial value might be integer, string, or
+ * array of integers.
* <li>integer array payloads. Only payloads referenced in fill-array-data instructions will be
- * processed. More specifically, if a payload is referenced in fill-array-data, and we are able
- * to determine that array is not array of integers, payload will be ignored. Otherwise, it will
- * be processed once fill-array-data-payload instruction is encountered.
+ * processed. More specifically, if a payload is referenced in fill-array-data, and we are
+ * able to determine that array is not array of integers, payload will be ignored. Otherwise,
+ * it will be processed once fill-array-data-payload instruction is encountered.
* <li>all annotations (class, field, method) that contain annotation element whose value is
- * integer, string or array of integers are processed.
+ * integer, string or array of integers are processed.
* </ul>
*
* <p>Please note that switch payloads are not analyzed. Although they might contain integer
@@ -92,10 +94,10 @@
// TODO(b/121121779) Remove keep if possible.
@Deprecated
-@Keep
+@KeepForApi
final public class ResourceShrinker {
- @Keep
+ @KeepForApi
public final static class Command extends BaseCommand {
Command(AndroidApp app) {
@@ -108,7 +110,7 @@
}
}
- @Keep
+ @KeepForApi
public final static class Builder extends BaseCommand.Builder<Command, Builder> {
@Override
@@ -126,7 +128,7 @@
* Classes that would like to process data relevant to resource shrinking should implement this
* interface.
*/
- @KeepForSubclassing
+ @KeepForApi
public interface ReferenceChecker {
/**
diff --git a/src/main/java/com/android/tools/r8/SourceFileEnvironment.java b/src/main/java/com/android/tools/r8/SourceFileEnvironment.java
index 86a7211..263db17 100644
--- a/src/main/java/com/android/tools/r8/SourceFileEnvironment.java
+++ b/src/main/java/com/android/tools/r8/SourceFileEnvironment.java
@@ -3,8 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/** Environment made available when defining a custom map id for a build. */
-@Keep
+@KeepForApi
public interface SourceFileEnvironment {
/** Get the computed `id` for the mapping file. @See MapIdProvider */
diff --git a/src/main/java/com/android/tools/r8/SourceFileProvider.java b/src/main/java/com/android/tools/r8/SourceFileProvider.java
index a0a58cc..bed5a07 100644
--- a/src/main/java/com/android/tools/r8/SourceFileProvider.java
+++ b/src/main/java/com/android/tools/r8/SourceFileProvider.java
@@ -3,6 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
/**
* Interface for providing a custom source file to the compiler.
*
@@ -10,7 +12,7 @@
* output program. The source file attribute is present in the stacktraces computed by the JVM and
* DEX runtimes, thus it can be used to identify builds.
*/
-@Keep
+@KeepForApi
@FunctionalInterface
public interface SourceFileProvider {
diff --git a/src/main/java/com/android/tools/r8/StringConsumer.java b/src/main/java/com/android/tools/r8/StringConsumer.java
index 2583572..c417223 100644
--- a/src/main/java/com/android/tools/r8/StringConsumer.java
+++ b/src/main/java/com/android/tools/r8/StringConsumer.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.ExceptionDiagnostic;
@@ -14,7 +15,7 @@
import java.nio.file.Path;
/** Interface for receiving String resource. */
-@KeepForSubclassing
+@KeepForApi
public interface StringConsumer extends Finishable {
/**
@@ -37,7 +38,7 @@
}
/** Empty consumer to request the production of the resource but ignore its value. */
- @Keep
+ @KeepForApi
class EmptyConsumer implements StringConsumer {
private static final EmptyConsumer EMPTY_CONSUMER = new EmptyConsumer();
@@ -54,7 +55,7 @@
}
/** Forwarding consumer to delegate to an optional existing consumer. */
- @Keep
+ @KeepForApi
class ForwardingConsumer implements StringConsumer {
private final StringConsumer consumer;
@@ -80,7 +81,7 @@
}
/** File consumer to write contents to a file-system file. */
- @Keep // TODO(b/121121779) Consider deprecating the R8 provided file writing.
+ @KeepForApi
class FileConsumer extends ForwardingConsumer {
private final Path outputPath;
diff --git a/src/main/java/com/android/tools/r8/SyntheticInfoConsumer.java b/src/main/java/com/android/tools/r8/SyntheticInfoConsumer.java
index 2bfc5b2..da1774f 100644
--- a/src/main/java/com/android/tools/r8/SyntheticInfoConsumer.java
+++ b/src/main/java/com/android/tools/r8/SyntheticInfoConsumer.java
@@ -3,7 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
-@Keep
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+
+@KeepForApi
public interface SyntheticInfoConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/SyntheticInfoConsumerData.java b/src/main/java/com/android/tools/r8/SyntheticInfoConsumerData.java
index be28596..a42b337 100644
--- a/src/main/java/com/android/tools/r8/SyntheticInfoConsumerData.java
+++ b/src/main/java/com/android/tools/r8/SyntheticInfoConsumerData.java
@@ -3,10 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
/** Information about a compiler synthesized class. */
-@Keep
+@KeepForApi
public interface SyntheticInfoConsumerData {
/** Get the reference for the compiler synthesized class. */
diff --git a/src/main/java/com/android/tools/r8/TextInputStream.java b/src/main/java/com/android/tools/r8/TextInputStream.java
index 433df09..486e3d1 100644
--- a/src/main/java/com/android/tools/r8/TextInputStream.java
+++ b/src/main/java/com/android/tools/r8/TextInputStream.java
@@ -4,10 +4,11 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.io.InputStream;
import java.nio.charset.Charset;
-@Keep
+@KeepForApi
public interface TextInputStream {
InputStream getInputStream();
diff --git a/src/main/java/com/android/tools/r8/TextOutputStream.java b/src/main/java/com/android/tools/r8/TextOutputStream.java
index 224d9da..c545c7f 100644
--- a/src/main/java/com/android/tools/r8/TextOutputStream.java
+++ b/src/main/java/com/android/tools/r8/TextOutputStream.java
@@ -4,10 +4,11 @@
package com.android.tools.r8;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.io.OutputStream;
import java.nio.charset.Charset;
-@Keep
+@KeepForApi
public interface TextOutputStream {
OutputStream getOutputStream();
diff --git a/src/main/java/com/android/tools/r8/androidapi/AndroidApiUnknownReferenceDiagnostic.java b/src/main/java/com/android/tools/r8/androidapi/AndroidApiUnknownReferenceDiagnostic.java
index fba87df..286d165 100644
--- a/src/main/java/com/android/tools/r8/androidapi/AndroidApiUnknownReferenceDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/androidapi/AndroidApiUnknownReferenceDiagnostic.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.androidapi;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexReference;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class AndroidApiUnknownReferenceDiagnostic extends AndroidApiDiagnostic {
private final DexReference reference;
diff --git a/src/main/java/com/android/tools/r8/diagnostic/DefinitionClassContext.java b/src/main/java/com/android/tools/r8/diagnostic/DefinitionClassContext.java
index e1530bf..5db9876 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/DefinitionClassContext.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/DefinitionClassContext.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
-@Keep
+@KeepForApi
public interface DefinitionClassContext extends DefinitionContext {
/** Returns the reference of the class context. */
diff --git a/src/main/java/com/android/tools/r8/diagnostic/DefinitionContext.java b/src/main/java/com/android/tools/r8/diagnostic/DefinitionContext.java
index d05e123..19549be 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/DefinitionContext.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/DefinitionContext.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
/** A context that references a missing definition in the program, classpath, or library. */
-@Keep
+@KeepForApi
public interface DefinitionContext {
/** The origin of the context. */
diff --git a/src/main/java/com/android/tools/r8/diagnostic/DefinitionFieldContext.java b/src/main/java/com/android/tools/r8/diagnostic/DefinitionFieldContext.java
index b3c4981..6cfce6b 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/DefinitionFieldContext.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/DefinitionFieldContext.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.FieldReference;
-@Keep
+@KeepForApi
public interface DefinitionFieldContext extends DefinitionContext {
/** Returns the reference of the field context. */
diff --git a/src/main/java/com/android/tools/r8/diagnostic/DefinitionMethodContext.java b/src/main/java/com/android/tools/r8/diagnostic/DefinitionMethodContext.java
index 86742db..f64785d 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/DefinitionMethodContext.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/DefinitionMethodContext.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
-@Keep
+@KeepForApi
public interface DefinitionMethodContext extends DefinitionContext {
/** Returns the reference of the method context. */
diff --git a/src/main/java/com/android/tools/r8/diagnostic/MissingClassInfo.java b/src/main/java/com/android/tools/r8/diagnostic/MissingClassInfo.java
index 41f255a..2d22b50 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/MissingClassInfo.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/MissingClassInfo.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
-@Keep
+@KeepForApi
public interface MissingClassInfo extends MissingDefinitionInfo {
/** Returns the reference of the missing class. */
diff --git a/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionInfo.java b/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionInfo.java
index 03fe322..7bdbee8 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionInfo.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionInfo.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.Collection;
/**
* Information about the contexts that references an item that was not part of the compilation unit.
*/
-@Keep
+@KeepForApi
public interface MissingDefinitionInfo {
/**
diff --git a/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionsDiagnostic.java b/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionsDiagnostic.java
index b3111be..d7ab801 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionsDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/MissingDefinitionsDiagnostic.java
@@ -5,14 +5,14 @@
package com.android.tools.r8.diagnostic;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.Collection;
/**
* Information about items that are not part of the compilation unit, but which are referenced from
* a reachable program location.
*/
-@Keep
+@KeepForApi
public interface MissingDefinitionsDiagnostic extends Diagnostic {
/**
diff --git a/src/main/java/com/android/tools/r8/diagnostic/MissingFieldInfo.java b/src/main/java/com/android/tools/r8/diagnostic/MissingFieldInfo.java
index 1ae6df1..70530de 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/MissingFieldInfo.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/MissingFieldInfo.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.FieldReference;
-@Keep
+@KeepForApi
public interface MissingFieldInfo extends MissingDefinitionInfo {
/** Returns the reference of the missing field. */
diff --git a/src/main/java/com/android/tools/r8/diagnostic/MissingMethodInfo.java b/src/main/java/com/android/tools/r8/diagnostic/MissingMethodInfo.java
index 3cf8cc0..51601b6 100644
--- a/src/main/java/com/android/tools/r8/diagnostic/MissingMethodInfo.java
+++ b/src/main/java/com/android/tools/r8/diagnostic/MissingMethodInfo.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
-@Keep
+@KeepForApi
public interface MissingMethodInfo extends MissingDefinitionInfo {
/** Returns the reference of the missing method. */
diff --git a/src/main/java/com/android/tools/r8/errors/AssumeNoSideEffectsRuleForObjectMembersDiagnostic.java b/src/main/java/com/android/tools/r8/errors/AssumeNoSideEffectsRuleForObjectMembersDiagnostic.java
index cb4fafb..d6ccb95 100644
--- a/src/main/java/com/android/tools/r8/errors/AssumeNoSideEffectsRuleForObjectMembersDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/AssumeNoSideEffectsRuleForObjectMembersDiagnostic.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.MethodReference;
@@ -15,7 +15,7 @@
import java.util.List;
import java.util.Set;
-@Keep
+@KeepForApi
public class AssumeNoSideEffectsRuleForObjectMembersDiagnostic implements Diagnostic {
private final List<MethodReference> methods;
diff --git a/src/main/java/com/android/tools/r8/errors/AssumeValuesMissingStaticFieldDiagnostic.java b/src/main/java/com/android/tools/r8/errors/AssumeValuesMissingStaticFieldDiagnostic.java
index 38f6a46..1f65efd 100644
--- a/src/main/java/com/android/tools/r8/errors/AssumeValuesMissingStaticFieldDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/AssumeValuesMissingStaticFieldDiagnostic.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class AssumeValuesMissingStaticFieldDiagnostic implements Diagnostic {
private final DexType fieldHolder;
diff --git a/src/main/java/com/android/tools/r8/errors/CheckDiscardDiagnostic.java b/src/main/java/com/android/tools/r8/errors/CheckDiscardDiagnostic.java
index 82ab8f4..3f67044 100644
--- a/src/main/java/com/android/tools/r8/errors/CheckDiscardDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/CheckDiscardDiagnostic.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.ProgramDefinition;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.shaking.GraphReporter;
@@ -15,7 +15,7 @@
import java.io.PrintStream;
import java.util.List;
-@Keep
+@KeepForApi
public class CheckDiscardDiagnostic implements Diagnostic {
private final List<String> messages;
diff --git a/src/main/java/com/android/tools/r8/errors/CheckEnumUnboxedDiagnostic.java b/src/main/java/com/android/tools/r8/errors/CheckEnumUnboxedDiagnostic.java
index 3339192..d30dbc7 100644
--- a/src/main/java/com/android/tools/r8/errors/CheckEnumUnboxedDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/CheckEnumUnboxedDiagnostic.java
@@ -5,16 +5,16 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.google.common.collect.ImmutableList;
import java.util.Comparator;
import java.util.List;
-@Keep
+@KeepForApi
public class CheckEnumUnboxedDiagnostic implements Diagnostic {
private final List<String> messages;
diff --git a/src/main/java/com/android/tools/r8/errors/ClassFileOverflowDiagnostic.java b/src/main/java/com/android/tools/r8/errors/ClassFileOverflowDiagnostic.java
index f9d49f0..6bcc568 100644
--- a/src/main/java/com/android/tools/r8/errors/ClassFileOverflowDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/ClassFileOverflowDiagnostic.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public abstract class ClassFileOverflowDiagnostic implements Diagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/errors/CodeSizeOverflowDiagnostic.java b/src/main/java/com/android/tools/r8/errors/CodeSizeOverflowDiagnostic.java
index 5359ee0..15de75d 100644
--- a/src/main/java/com/android/tools/r8/errors/CodeSizeOverflowDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/CodeSizeOverflowDiagnostic.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.MethodPosition;
import com.android.tools.r8.position.Position;
@@ -13,7 +13,7 @@
* Diagnostic information about a class file which could not be generated as the code size of a
* method overflowed the limit.
*/
-@Keep
+@KeepForApi
public class CodeSizeOverflowDiagnostic extends ClassFileOverflowDiagnostic {
private final MethodReference method;
diff --git a/src/main/java/com/android/tools/r8/errors/ConstantDynamicDesugarDiagnostic.java b/src/main/java/com/android/tools/r8/errors/ConstantDynamicDesugarDiagnostic.java
index d80b530..543e79b 100644
--- a/src/main/java/com/android/tools/r8/errors/ConstantDynamicDesugarDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/ConstantDynamicDesugarDiagnostic.java
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
/** Common type for all diagnostics related to constant-dynamic desugaring. */
-@Keep
+@KeepForApi
public class ConstantDynamicDesugarDiagnostic implements DesugarDiagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/errors/ConstantPoolOverflowDiagnostic.java b/src/main/java/com/android/tools/r8/errors/ConstantPoolOverflowDiagnostic.java
index 3c39f22..006cda5 100644
--- a/src/main/java/com/android/tools/r8/errors/ConstantPoolOverflowDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/ConstantPoolOverflowDiagnostic.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.references.ClassReference;
@@ -11,7 +11,7 @@
* Diagnostic information about a class file which could not be generated as the size of the
* required constant pool overflowed the limit.
*/
-@Keep
+@KeepForApi
public class ConstantPoolOverflowDiagnostic extends ClassFileOverflowDiagnostic {
private final int constantPoolSize;
diff --git a/src/main/java/com/android/tools/r8/errors/DesugarDiagnostic.java b/src/main/java/com/android/tools/r8/errors/DesugarDiagnostic.java
index 27b5a39..b541ff1 100644
--- a/src/main/java/com/android/tools/r8/errors/DesugarDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/DesugarDiagnostic.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/** Common interface type for all diagnostics related to desugaring. */
-@Keep
+@KeepForApi
public interface DesugarDiagnostic extends Diagnostic {}
diff --git a/src/main/java/com/android/tools/r8/errors/DexFileOverflowDiagnostic.java b/src/main/java/com/android/tools/r8/errors/DexFileOverflowDiagnostic.java
index 9427603..1930a3a 100644
--- a/src/main/java/com/android/tools/r8/errors/DexFileOverflowDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/DexFileOverflowDiagnostic.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.dex.VirtualFile;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
@@ -16,7 +16,7 @@
* compiling for legacy multidex but there are too many classes that need to fit in the main DEX
* file, e.g., classes.dex.
*/
-@Keep
+@KeepForApi
public class DexFileOverflowDiagnostic implements Diagnostic {
private final boolean hasMainDexSpecification;
private final long numOfMethods;
diff --git a/src/main/java/com/android/tools/r8/errors/DuplicateTypeInProgramAndLibraryDiagnostic.java b/src/main/java/com/android/tools/r8/errors/DuplicateTypeInProgramAndLibraryDiagnostic.java
index 5af3923..27ba93f 100644
--- a/src/main/java/com/android/tools/r8/errors/DuplicateTypeInProgramAndLibraryDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/DuplicateTypeInProgramAndLibraryDiagnostic.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.references.ClassReference;
import com.google.common.collect.ImmutableList;
import java.util.List;
-@Keep
+@KeepForApi
public class DuplicateTypeInProgramAndLibraryDiagnostic extends DuplicateTypesDiagnostic {
public DuplicateTypeInProgramAndLibraryDiagnostic(
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 6aa7234..dde2df2 100644
--- a/src/main/java/com/android/tools/r8/errors/DuplicateTypesDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/DuplicateTypesDiagnostic.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.ClassReference;
@@ -12,7 +12,7 @@
import com.android.tools.r8.utils.StringUtils;
import java.util.Collection;
-@Keep
+@KeepForApi
public class DuplicateTypesDiagnostic implements Diagnostic {
private final ClassReference type;
diff --git a/src/main/java/com/android/tools/r8/errors/IgnoredBackportMethodDiagnostic.java b/src/main/java/com/android/tools/r8/errors/IgnoredBackportMethodDiagnostic.java
index 8f56ecf..f3b5171 100644
--- a/src/main/java/com/android/tools/r8/errors/IgnoredBackportMethodDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/IgnoredBackportMethodDiagnostic.java
@@ -3,13 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.MethodReference;
-@Keep
+@KeepForApi
public class IgnoredBackportMethodDiagnostic implements DesugarDiagnostic {
private final DexMethod backport;
diff --git a/src/main/java/com/android/tools/r8/errors/IncompleteNestNestDesugarDiagnosic.java b/src/main/java/com/android/tools/r8/errors/IncompleteNestNestDesugarDiagnosic.java
index c888069..0a59a42 100644
--- a/src/main/java/com/android/tools/r8/errors/IncompleteNestNestDesugarDiagnosic.java
+++ b/src/main/java/com/android/tools/r8/errors/IncompleteNestNestDesugarDiagnosic.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class IncompleteNestNestDesugarDiagnosic extends NestDesugarDiagnostic {
public IncompleteNestNestDesugarDiagnosic(Origin origin, Position position, String message) {
diff --git a/src/main/java/com/android/tools/r8/errors/InlinableStaticFinalFieldPreconditionDiagnostic.java b/src/main/java/com/android/tools/r8/errors/InlinableStaticFinalFieldPreconditionDiagnostic.java
index 45b40d2..833d7b6 100644
--- a/src/main/java/com/android/tools/r8/errors/InlinableStaticFinalFieldPreconditionDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/InlinableStaticFinalFieldPreconditionDiagnostic.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexField;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.FieldReference;
@@ -16,7 +16,7 @@
import java.util.Collection;
import java.util.List;
-@Keep
+@KeepForApi
public class InlinableStaticFinalFieldPreconditionDiagnostic implements Diagnostic {
private final ProguardIfRule rule;
diff --git a/src/main/java/com/android/tools/r8/errors/InterfaceDesugarDiagnostic.java b/src/main/java/com/android/tools/r8/errors/InterfaceDesugarDiagnostic.java
index afc2115..6156e58 100644
--- a/src/main/java/com/android/tools/r8/errors/InterfaceDesugarDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/InterfaceDesugarDiagnostic.java
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/** Common interface type for all diagnostics related to interface-method desugaring. */
-@Keep
+@KeepForApi
public interface InterfaceDesugarDiagnostic extends DesugarDiagnostic {}
diff --git a/src/main/java/com/android/tools/r8/errors/InterfaceDesugarMissingTypeDiagnostic.java b/src/main/java/com/android/tools/r8/errors/InterfaceDesugarMissingTypeDiagnostic.java
index b3f3fd6..33487ab 100644
--- a/src/main/java/com/android/tools/r8/errors/InterfaceDesugarMissingTypeDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/InterfaceDesugarMissingTypeDiagnostic.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.ClassReference;
@@ -11,7 +11,7 @@
/**
* Diagnostic for missing types needed for correct desugaring of default/static interface methods.
*/
-@Keep
+@KeepForApi
public class InterfaceDesugarMissingTypeDiagnostic implements DesugarDiagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/errors/InvalidLibrarySuperclassDiagnostic.java b/src/main/java/com/android/tools/r8/errors/InvalidLibrarySuperclassDiagnostic.java
index 2392f0a..d120176 100644
--- a/src/main/java/com/android/tools/r8/errors/InvalidLibrarySuperclassDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/InvalidLibrarySuperclassDiagnostic.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.ClassReference;
@@ -16,7 +16,7 @@
* Diagnostic for super types of library classes which are not library classes but required for
* desugaring.
*/
-@Keep
+@KeepForApi
public class InvalidLibrarySuperclassDiagnostic implements DesugarDiagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/errors/MissingNestHostNestDesugarDiagnostic.java b/src/main/java/com/android/tools/r8/errors/MissingNestHostNestDesugarDiagnostic.java
index 2b3cbab..483467b 100644
--- a/src/main/java/com/android/tools/r8/errors/MissingNestHostNestDesugarDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/MissingNestHostNestDesugarDiagnostic.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class MissingNestHostNestDesugarDiagnostic extends NestDesugarDiagnostic {
public MissingNestHostNestDesugarDiagnostic(Origin origin, Position position, String message) {
diff --git a/src/main/java/com/android/tools/r8/errors/NestDesugarDiagnostic.java b/src/main/java/com/android/tools/r8/errors/NestDesugarDiagnostic.java
index 8662eee..c2ee108 100644
--- a/src/main/java/com/android/tools/r8/errors/NestDesugarDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/NestDesugarDiagnostic.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class NestDesugarDiagnostic implements DesugarDiagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/errors/ProguardKeepRuleDiagnostic.java b/src/main/java/com/android/tools/r8/errors/ProguardKeepRuleDiagnostic.java
index 10d8c1f..95cf81e 100644
--- a/src/main/java/com/android/tools/r8/errors/ProguardKeepRuleDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/ProguardKeepRuleDiagnostic.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/** Base interface for diagnostics related to proguard keep rules. */
-@Keep
+@KeepForApi
public interface ProguardKeepRuleDiagnostic extends Diagnostic {}
diff --git a/src/main/java/com/android/tools/r8/errors/StartupClassesNonStartupFractionDiagnostic.java b/src/main/java/com/android/tools/r8/errors/StartupClassesNonStartupFractionDiagnostic.java
index e024130..b59f642 100644
--- a/src/main/java/com/android/tools/r8/errors/StartupClassesNonStartupFractionDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/StartupClassesNonStartupFractionDiagnostic.java
@@ -5,9 +5,9 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.profile.startup.profile.StartupProfile;
@@ -15,7 +15,7 @@
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
import java.util.List;
-@Keep
+@KeepForApi
public class StartupClassesNonStartupFractionDiagnostic implements Diagnostic {
private final int numberOfStartupClasses;
diff --git a/src/main/java/com/android/tools/r8/errors/StartupClassesOverflowDiagnostic.java b/src/main/java/com/android/tools/r8/errors/StartupClassesOverflowDiagnostic.java
index 00290a2..c200087 100644
--- a/src/main/java/com/android/tools/r8/errors/StartupClassesOverflowDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/StartupClassesOverflowDiagnostic.java
@@ -5,13 +5,13 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
-@Keep
+@KeepForApi
public class StartupClassesOverflowDiagnostic implements Diagnostic {
private final int numberOfStartupDexFiles;
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedConstDynamicDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedConstDynamicDiagnostic.java
index b75f686..513d395 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedConstDynamicDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedConstDynamicDiagnostic.java
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.utils.InternalOptions;
-@Keep
+@KeepForApi
public class UnsupportedConstDynamicDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodHandleDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodHandleDiagnostic.java
index 375adf1..2850821 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodHandleDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodHandleDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.constantMethodHandleApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedConstMethodHandleDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodTypeDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodTypeDiagnostic.java
index 5809011..f31a632 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodTypeDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedConstMethodTypeDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.constantMethodTypeApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedConstMethodTypeDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedDefaultInterfaceMethodDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedDefaultInterfaceMethodDiagnostic.java
index 6905dcc..77f64f5 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedDefaultInterfaceMethodDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedDefaultInterfaceMethodDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.defaultInterfaceMethodsApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedDefaultInterfaceMethodDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedDesugaredLibraryConfigurationVersionDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedDesugaredLibraryConfigurationVersionDiagnostic.java
index 7e2455a..736a075 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedDesugaredLibraryConfigurationVersionDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedDesugaredLibraryConfigurationVersionDiagnostic.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedDesugaredLibraryConfigurationVersionDiagnostic implements Diagnostic {
private static final String dagRoot = "https://developer.android.com";
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedFeatureDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedFeatureDiagnostic.java
index 1ac0482..c3be292 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedFeatureDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedFeatureDiagnostic.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.utils.AndroidApiLevel;
-@Keep
+@KeepForApi
public abstract class UnsupportedFeatureDiagnostic implements Diagnostic {
public static String makeMessage(
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedInvokeCustomDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedInvokeCustomDiagnostic.java
index ca67569..27fb2e9 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedInvokeCustomDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedInvokeCustomDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.invokeCustomApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedInvokeCustomDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicMethodHandleDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicMethodHandleDiagnostic.java
index 23718f3..b88f49b 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicMethodHandleDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicMethodHandleDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.invokePolymorphicOnMethodHandleApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedInvokePolymorphicMethodHandleDiagnostic
extends UnsupportedFeatureDiagnostic {
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicVarHandleDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicVarHandleDiagnostic.java
index 49f73a6..8f3f111 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicVarHandleDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedInvokePolymorphicVarHandleDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.invokePolymorphicOnVarHandleApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedInvokePolymorphicVarHandleDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedMainDexListUsageDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedMainDexListUsageDiagnostic.java
index 9bcbcba..fdaa15c 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedMainDexListUsageDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedMainDexListUsageDiagnostic.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.errors;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
@@ -13,7 +13,7 @@
*
* <p>See b/181858113 for context.
*/
-@Keep
+@KeepForApi
public class UnsupportedMainDexListUsageDiagnostic implements Diagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedPrivateInterfaceMethodDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedPrivateInterfaceMethodDiagnostic.java
index 0a52151..79fe57d 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedPrivateInterfaceMethodDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedPrivateInterfaceMethodDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.privateInterfaceMethodsApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedPrivateInterfaceMethodDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnsupportedStaticInterfaceMethodDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnsupportedStaticInterfaceMethodDiagnostic.java
index 3220744..1e6734f 100644
--- a/src/main/java/com/android/tools/r8/errors/UnsupportedStaticInterfaceMethodDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnsupportedStaticInterfaceMethodDiagnostic.java
@@ -5,11 +5,11 @@
import static com.android.tools.r8.utils.InternalOptions.staticInterfaceMethodsApiLevel;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class UnsupportedStaticInterfaceMethodDiagnostic extends UnsupportedFeatureDiagnostic {
// API: MUST NOT CHANGE!
diff --git a/src/main/java/com/android/tools/r8/errors/UnusedProguardKeepRuleDiagnostic.java b/src/main/java/com/android/tools/r8/errors/UnusedProguardKeepRuleDiagnostic.java
index 2d2b326..ae1f370 100644
--- a/src/main/java/com/android/tools/r8/errors/UnusedProguardKeepRuleDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/errors/UnusedProguardKeepRuleDiagnostic.java
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.errors;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.shaking.ProguardConfigurationRule;
-@Keep
+@KeepForApi
public class UnusedProguardKeepRuleDiagnostic implements ProguardKeepRuleDiagnostic {
private final ProguardConfigurationRule rule;
diff --git a/src/main/java/com/android/tools/r8/experimental/graphinfo/AnnotationGraphNode.java b/src/main/java/com/android/tools/r8/experimental/graphinfo/AnnotationGraphNode.java
index 7baa5fa..86f1b88 100644
--- a/src/main/java/com/android/tools/r8/experimental/graphinfo/AnnotationGraphNode.java
+++ b/src/main/java/com/android/tools/r8/experimental/graphinfo/AnnotationGraphNode.java
@@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.experimental.graphinfo;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.Objects;
-@Keep
+@KeepForApi
public final class AnnotationGraphNode extends GraphNode {
private final GraphNode annotatedNode;
diff --git a/src/main/java/com/android/tools/r8/experimental/graphinfo/ClassGraphNode.java b/src/main/java/com/android/tools/r8/experimental/graphinfo/ClassGraphNode.java
index fa55609..2ce20ed 100644
--- a/src/main/java/com/android/tools/r8/experimental/graphinfo/ClassGraphNode.java
+++ b/src/main/java/com/android/tools/r8/experimental/graphinfo/ClassGraphNode.java
@@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.experimental.graphinfo;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
-@Keep
+@KeepForApi
public final class ClassGraphNode extends GraphNode {
private final ClassReference reference;
diff --git a/src/main/java/com/android/tools/r8/experimental/graphinfo/FieldGraphNode.java b/src/main/java/com/android/tools/r8/experimental/graphinfo/FieldGraphNode.java
index 836058f..723016e 100644
--- a/src/main/java/com/android/tools/r8/experimental/graphinfo/FieldGraphNode.java
+++ b/src/main/java/com/android/tools/r8/experimental/graphinfo/FieldGraphNode.java
@@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.experimental.graphinfo;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.FieldReference;
-@Keep
+@KeepForApi
public final class FieldGraphNode extends GraphNode {
private final FieldReference reference;
diff --git a/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphConsumer.java b/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphConsumer.java
index 3c7bda1..5de4325 100644
--- a/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphConsumer.java
+++ b/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphConsumer.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.experimental.graphinfo;
-import com.android.tools.r8.KeepForSubclassing;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@KeepForSubclassing
+@KeepForApi
public interface GraphConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphNode.java b/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphNode.java
index 640035a..603fbf1 100644
--- a/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphNode.java
+++ b/src/main/java/com/android/tools/r8/experimental/graphinfo/GraphNode.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.experimental.graphinfo;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public abstract class GraphNode {
private static final GraphNode CYCLE =
diff --git a/src/main/java/com/android/tools/r8/experimental/graphinfo/KeepRuleGraphNode.java b/src/main/java/com/android/tools/r8/experimental/graphinfo/KeepRuleGraphNode.java
index 67feaf7..a75a45f 100644
--- a/src/main/java/com/android/tools/r8/experimental/graphinfo/KeepRuleGraphNode.java
+++ b/src/main/java/com/android/tools/r8/experimental/graphinfo/KeepRuleGraphNode.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.experimental.graphinfo;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.position.TextPosition;
@@ -16,7 +16,7 @@
// Note: this could potentially be merged with ConditionalKeepRuleGraphNode
// and an empty precondition set.
-@Keep
+@KeepForApi
public final class KeepRuleGraphNode extends GraphNode {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/experimental/graphinfo/MethodGraphNode.java b/src/main/java/com/android/tools/r8/experimental/graphinfo/MethodGraphNode.java
index 7a92a91..bf42338 100644
--- a/src/main/java/com/android/tools/r8/experimental/graphinfo/MethodGraphNode.java
+++ b/src/main/java/com/android/tools/r8/experimental/graphinfo/MethodGraphNode.java
@@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.experimental.graphinfo;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
-@Keep
+@KeepForApi
public final class MethodGraphNode extends GraphNode {
private final MethodReference reference;
diff --git a/src/main/java/com/android/tools/r8/inspector/BooleanValueInspector.java b/src/main/java/com/android/tools/r8/inspector/BooleanValueInspector.java
index 105f577..ff8226d 100644
--- a/src/main/java/com/android/tools/r8/inspector/BooleanValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/BooleanValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface BooleanValueInspector extends ValueInspector {
boolean getBooleanValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/ByteValueInspector.java b/src/main/java/com/android/tools/r8/inspector/ByteValueInspector.java
index 045476d..d375f1d 100644
--- a/src/main/java/com/android/tools/r8/inspector/ByteValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/ByteValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface ByteValueInspector extends ValueInspector {
byte getByteValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/CharValueInspector.java b/src/main/java/com/android/tools/r8/inspector/CharValueInspector.java
index 05d5c2b..a9f16c0 100644
--- a/src/main/java/com/android/tools/r8/inspector/CharValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/CharValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface CharValueInspector extends ValueInspector {
char getCharValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/ClassInspector.java b/src/main/java/com/android/tools/r8/inspector/ClassInspector.java
index 6234592..5cbf8e8 100644
--- a/src/main/java/com/android/tools/r8/inspector/ClassInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/ClassInspector.java
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import java.util.function.Consumer;
/** Inspector for a class or interface definition. */
-@Keep
+@KeepForApi
public interface ClassInspector {
/** Get the class reference for the class of this inspector. */
diff --git a/src/main/java/com/android/tools/r8/inspector/DoubleValueInspector.java b/src/main/java/com/android/tools/r8/inspector/DoubleValueInspector.java
index e9ac7e1..5d5b294 100644
--- a/src/main/java/com/android/tools/r8/inspector/DoubleValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/DoubleValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface DoubleValueInspector extends ValueInspector {
double getDoubleValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/FieldInspector.java b/src/main/java/com/android/tools/r8/inspector/FieldInspector.java
index 5d2e656..9bacff4 100644
--- a/src/main/java/com/android/tools/r8/inspector/FieldInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/FieldInspector.java
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.FieldReference;
import java.util.Optional;
/** Inspector for a field definition. */
-@Keep
+@KeepForApi
public interface FieldInspector {
/** Get the field reference for the field of this inspector. */
diff --git a/src/main/java/com/android/tools/r8/inspector/FloatValueInspector.java b/src/main/java/com/android/tools/r8/inspector/FloatValueInspector.java
index a7be463..8ba7de3 100644
--- a/src/main/java/com/android/tools/r8/inspector/FloatValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/FloatValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface FloatValueInspector extends ValueInspector {
float getFloatValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/Inspector.java b/src/main/java/com/android/tools/r8/inspector/Inspector.java
index 880b450..9313f21 100644
--- a/src/main/java/com/android/tools/r8/inspector/Inspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/Inspector.java
@@ -3,11 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.function.Consumer;
/** Inspector providing access to various parts of an application. */
-@Keep
+@KeepForApi
public interface Inspector {
/** Iterate all classes and interfaces defined by the program (order unspecified). */
diff --git a/src/main/java/com/android/tools/r8/inspector/IntValueInspector.java b/src/main/java/com/android/tools/r8/inspector/IntValueInspector.java
index 6b43ac8..4b8530e 100644
--- a/src/main/java/com/android/tools/r8/inspector/IntValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/IntValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface IntValueInspector extends ValueInspector {
int getIntValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/LongValueInspector.java b/src/main/java/com/android/tools/r8/inspector/LongValueInspector.java
index 987721e..3a911ee 100644
--- a/src/main/java/com/android/tools/r8/inspector/LongValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/LongValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface LongValueInspector extends ValueInspector {
long getLongValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/MethodInspector.java b/src/main/java/com/android/tools/r8/inspector/MethodInspector.java
index 41cc8de..587fafa 100644
--- a/src/main/java/com/android/tools/r8/inspector/MethodInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/MethodInspector.java
@@ -3,11 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
/** Inspector for a method definition. */
-@Keep
+@KeepForApi
public interface MethodInspector {
/** Get the method reference for the method of this inspector. */
diff --git a/src/main/java/com/android/tools/r8/inspector/ShortValueInspector.java b/src/main/java/com/android/tools/r8/inspector/ShortValueInspector.java
index 6b01df3..519e01f 100644
--- a/src/main/java/com/android/tools/r8/inspector/ShortValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/ShortValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface ShortValueInspector extends ValueInspector {
short getShortValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/StringValueInspector.java b/src/main/java/com/android/tools/r8/inspector/StringValueInspector.java
index 5336948..7d47ab0 100644
--- a/src/main/java/com/android/tools/r8/inspector/StringValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/StringValueInspector.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface StringValueInspector extends ValueInspector {
String getStringValue();
}
diff --git a/src/main/java/com/android/tools/r8/inspector/ValueInspector.java b/src/main/java/com/android/tools/r8/inspector/ValueInspector.java
index 84f1fe0..a60db9c 100644
--- a/src/main/java/com/android/tools/r8/inspector/ValueInspector.java
+++ b/src/main/java/com/android/tools/r8/inspector/ValueInspector.java
@@ -3,11 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.inspector;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.TypeReference;
/** Inspector for a JVM representable value. */
-@Keep
+@KeepForApi
public interface ValueInspector {
/** Get the type reference describing the type of the value. */
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
index 49ab63a..5030fda 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
@@ -6,12 +6,12 @@
import com.android.tools.r8.ClassFileResourceProvider;
import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ProgramResourceProvider;
import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.StringResource;
import com.android.tools.r8.Version;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.ExceptionUtils;
import com.android.tools.r8.utils.Reporter;
@@ -21,7 +21,7 @@
import java.util.List;
import java.util.concurrent.ExecutorService;
-@Keep
+@KeepForApi
public class DesugaredMethodsList extends GenerateDesugaredLibraryLintFiles {
private final AndroidApiLevel minApi;
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java
index f5152cb..1eb157f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.ArchiveProgramResourceProvider;
import com.android.tools.r8.ClassFileResourceProvider;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ParseFlagInfo;
import com.android.tools.r8.ParseFlagInfoImpl;
import com.android.tools.r8.ParseFlagPrinter;
@@ -16,6 +15,7 @@
import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.StringResource;
import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.Reporter;
import com.android.tools.r8.utils.StringDiagnostic;
@@ -28,7 +28,7 @@
import java.util.Collection;
import java.util.List;
-@Keep
+@KeepForApi
public class DesugaredMethodsListCommand {
private final boolean help;
@@ -131,7 +131,7 @@
return new Builder(diagnosticsHandler);
}
- @Keep
+ @KeepForApi
public static class Builder {
private int minApi = AndroidApiLevel.B.getLevel();
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriterDiagnostic.java b/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriterDiagnostic.java
index ce17cc0..dddbe5e 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriterDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriterDiagnostic.java
@@ -5,11 +5,11 @@
package com.android.tools.r8.ir.optimize;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class ServiceLoaderRewriterDiagnostic implements Diagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningDiagnostic.java b/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningDiagnostic.java
index 9d0e1d1..12a82bb 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/inliner/WhyAreYouNotInliningDiagnostic.java
@@ -5,11 +5,11 @@
package com.android.tools.r8.ir.optimize.inliner;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class WhyAreYouNotInliningDiagnostic implements Diagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/naming/MapVersion.java b/src/main/java/com/android/tools/r8/naming/MapVersion.java
index 0698a2e..2b3b13b 100644
--- a/src/main/java/com/android/tools/r8/naming/MapVersion.java
+++ b/src/main/java/com/android/tools/r8/naming/MapVersion.java
@@ -3,11 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.naming;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.mappinginformation.MapVersionMappingInformation;
import com.android.tools.r8.utils.structural.Ordered;
-@Keep
+@KeepForApi
public enum MapVersion implements Ordered<MapVersion> {
MAP_VERSION_UNKNOWN("unknown"),
MAP_VERSION_NONE("none"),
diff --git a/src/main/java/com/android/tools/r8/naming/MappingComposeException.java b/src/main/java/com/android/tools/r8/naming/MappingComposeException.java
index f443d0e..33c3382 100644
--- a/src/main/java/com/android/tools/r8/naming/MappingComposeException.java
+++ b/src/main/java/com/android/tools/r8/naming/MappingComposeException.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.naming;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public class MappingComposeException extends Exception {
public MappingComposeException(String message) {
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java
index cc0da51..fb06257 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java
@@ -5,12 +5,12 @@
package com.android.tools.r8.naming.mappinginformation;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.position.TextPosition;
-@Keep
+@KeepForApi
public class MappingInformationDiagnostics implements Diagnostic {
private final String message;
diff --git a/src/main/java/com/android/tools/r8/origin/ArchiveEntryOrigin.java b/src/main/java/com/android/tools/r8/origin/ArchiveEntryOrigin.java
index 37ae662..2deafeb 100644
--- a/src/main/java/com/android/tools/r8/origin/ArchiveEntryOrigin.java
+++ b/src/main/java/com/android/tools/r8/origin/ArchiveEntryOrigin.java
@@ -4,12 +4,10 @@
package com.android.tools.r8.origin;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-/**
- * Origin representing an entry in an archive.
- */
-@Keep
+/** Origin representing an entry in an archive. */
+@KeepForApi
public class ArchiveEntryOrigin extends Origin {
final String entryName;
diff --git a/src/main/java/com/android/tools/r8/origin/Origin.java b/src/main/java/com/android/tools/r8/origin/Origin.java
index 0f3d320..9f05156 100644
--- a/src/main/java/com/android/tools/r8/origin/Origin.java
+++ b/src/main/java/com/android/tools/r8/origin/Origin.java
@@ -4,26 +4,26 @@
package com.android.tools.r8.origin;
-import com.android.tools.r8.KeepForSubclassing;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.ArrayList;
import java.util.List;
/**
* Origin description of a resource.
*
- * <p>An origin is a list of parts that describe where a resource originates from. The first part
- * is the most recent part and is associated with the present resource, each successive part is
- * then associated with the context of the previous part.
+ * <p>An origin is a list of parts that describe where a resource originates from. The first part is
+ * the most recent part and is associated with the present resource, each successive part is then
+ * associated with the context of the previous part.
*
- * <p>For example, for a class file, say {@code my/class/Foo.class}, that is contained within a
- * jar archive, say {@code myjar.jar}, the Origin of of this resource will be {@code
+ * <p>For example, for a class file, say {@code my/class/Foo.class}, that is contained within a jar
+ * archive, say {@code myjar.jar}, the Origin of of this resource will be {@code
* myjar.jar:my/class/Foo.class} where each part is separated by a colon.
*
* <p>There are two top-most origins which have no parent: {@code Origin.root()} and {@code
* Origin.unknown()}. The former is the parent of any file path, while the latter is an unknown
* origin (e.g., for generated resources of raw bytes).
*/
-@KeepForSubclassing
+@KeepForApi
public abstract class Origin implements Comparable<Origin> {
private static final Origin ROOT =
diff --git a/src/main/java/com/android/tools/r8/origin/PathOrigin.java b/src/main/java/com/android/tools/r8/origin/PathOrigin.java
index 0ff8080..491b5de 100644
--- a/src/main/java/com/android/tools/r8/origin/PathOrigin.java
+++ b/src/main/java/com/android/tools/r8/origin/PathOrigin.java
@@ -4,13 +4,11 @@
package com.android.tools.r8.origin;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.nio.file.Path;
-/**
- * Path component in an origin description.
- */
-@Keep
+/** Path component in an origin description. */
+@KeepForApi
public class PathOrigin extends Origin {
private final Path path;
diff --git a/src/main/java/com/android/tools/r8/position/MethodPosition.java b/src/main/java/com/android/tools/r8/position/MethodPosition.java
index 12a7d8d..efb4226 100644
--- a/src/main/java/com/android/tools/r8/position/MethodPosition.java
+++ b/src/main/java/com/android/tools/r8/position/MethodPosition.java
@@ -3,17 +3,17 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.position;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.ProgramMethod;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.TypeReference;
import java.util.List;
import java.util.stream.Collectors;
/** A {@link Position} denoting a method. */
-@Keep
+@KeepForApi
public class MethodPosition implements Position {
private final MethodReference method;
diff --git a/src/main/java/com/android/tools/r8/position/Position.java b/src/main/java/com/android/tools/r8/position/Position.java
index 1fae6e6..cd77f3c 100644
--- a/src/main/java/com/android/tools/r8/position/Position.java
+++ b/src/main/java/com/android/tools/r8/position/Position.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.position;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
* Represent a position in a resource, it can for example be line in a text file or the byte offset
* in a binary stream.
*/
-@Keep
+@KeepForApi
public interface Position {
/**
diff --git a/src/main/java/com/android/tools/r8/position/TextPosition.java b/src/main/java/com/android/tools/r8/position/TextPosition.java
index 730bd75..3b4a69e 100644
--- a/src/main/java/com/android/tools/r8/position/TextPosition.java
+++ b/src/main/java/com/android/tools/r8/position/TextPosition.java
@@ -3,13 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.position;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
- * A {@link Position} in a text file determined by line and column.
- * Line and column numbers start at 1.
+ * A {@link Position} in a text file determined by line and column. Line and column numbers start at
+ * 1.
*/
-@Keep
+@KeepForApi
public class TextPosition implements Position {
/**
diff --git a/src/main/java/com/android/tools/r8/position/TextRange.java b/src/main/java/com/android/tools/r8/position/TextRange.java
index 62c5c39..ed69268 100644
--- a/src/main/java/com/android/tools/r8/position/TextRange.java
+++ b/src/main/java/com/android/tools/r8/position/TextRange.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.position;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public class TextRange implements Position {
private final TextPosition start;
private final TextPosition end;
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilder.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilder.java
index 57a7856..20f9443 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilder.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilder.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.TextInputStream;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.function.Consumer;
/** API for building an ART profile. */
-@Keep
+@KeepForApi
public interface ArtProfileBuilder {
/** API for adding information about a class rule to the compiler. */
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleBuilder.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleBuilder.java
index eaeab93..a5259f9 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleBuilder.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleBuilder.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
/** API for defining a class rule for an ART profile. */
-@Keep
+@KeepForApi
public interface ArtProfileClassRuleBuilder {
ArtProfileClassRuleBuilder setClassReference(ClassReference classReference);
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleInfo.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleInfo.java
index 7ba6bbe..6dcde1d 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleInfo.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileClassRuleInfo.java
@@ -4,7 +4,8 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
+import com.android.tools.r8.keepanno.annotations.KeepItemKind;
-@Keep
+@KeepForApi(kind = KeepItemKind.ONLY_CLASS)
public interface ArtProfileClassRuleInfo {}
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileConsumer.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileConsumer.java
index b395a12..d1ea7f8 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileConsumer.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileConsumer.java
@@ -5,14 +5,14 @@
package com.android.tools.r8.profile.art;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.TextOutputStream;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
* API for consuming an ART profile provided by the compiler, which has been rewritten to match the
* residual, optimized app.
*/
-@Keep
+@KeepForApi
public interface ArtProfileConsumer {
/**
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleBuilder.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleBuilder.java
index 4bae3b3..d8c15c6 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleBuilder.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleBuilder.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
import java.util.function.Consumer;
/** API for defining a method rule for an ART profile. */
-@Keep
+@KeepForApi
public interface ArtProfileMethodRuleBuilder {
ArtProfileMethodRuleBuilder setMethodReference(MethodReference methodReference);
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfo.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfo.java
index 6a176ab..ddf9a92 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfo.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfo.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface ArtProfileMethodRuleInfo {
/** Returns true if this method rule method rule is flagged as hot ('H'). */
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfoBuilder.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfoBuilder.java
index 11f8b42..13f122c 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfoBuilder.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileMethodRuleInfoBuilder.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/** API for providing metadata related to a method rule for an ART profile. */
-@Keep
+@KeepForApi
public interface ArtProfileMethodRuleInfoBuilder {
ArtProfileMethodRuleInfoBuilder setIsHot(boolean isHot);
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileProvider.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileProvider.java
index 87450e5..0192f9c 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileProvider.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileProvider.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.Resource;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/** API for providing an ART profile to the compiler. */
-@Keep
+@KeepForApi
public interface ArtProfileProvider extends Resource {
void getArtProfile(ArtProfileBuilder profileBuilder);
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileRuleConsumer.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileRuleConsumer.java
index beab144..d5b349c 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileRuleConsumer.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileRuleConsumer.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.MethodReference;
@@ -13,7 +13,7 @@
* #acceptClassRule} and {@link #acceptMethodRule} for each class and method rule (respectively) in
* the profile.
*/
-@Keep
+@KeepForApi
public interface ArtProfileRuleConsumer {
/** Provides information about a specific class rule to the consumer. */
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileRulePredicate.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileRulePredicate.java
index ea843f2..3fc6194 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileRulePredicate.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileRulePredicate.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.MethodReference;
-@Keep
+@KeepForApi
public interface ArtProfileRulePredicate {
boolean testClassRule(ClassReference classReference, ArtProfileClassRuleInfo classRuleInfo);
diff --git a/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParserBuilder.java b/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParserBuilder.java
index 9caa97e..e8b58dd 100644
--- a/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParserBuilder.java
+++ b/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParserBuilder.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.profile.art;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
* A builder for configuring a parser for the human-readable ART profile format.
@@ -12,7 +12,7 @@
* @see <a href="https://developer.android.com/topic/performance/baselineprofiles">ART Baseline
* Profiles</a>
*/
-@Keep
+@KeepForApi
public interface HumanReadableArtProfileParserBuilder {
/**
diff --git a/src/main/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnostic.java b/src/main/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnostic.java
index d93b5f6..4fba1b9 100644
--- a/src/main/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnostic.java
@@ -5,11 +5,11 @@
package com.android.tools.r8.profile.art.diagnostic;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class HumanReadableArtProfileParserErrorDiagnostic implements Diagnostic {
private final String rule;
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 6699f2b..5857e9e 100644
--- a/src/main/java/com/android/tools/r8/references/ArrayReference.java
+++ b/src/main/java/com/android/tools/r8/references/ArrayReference.java
@@ -3,14 +3,14 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.DescriptorUtils;
import java.util.Objects;
/** Reference to an array type. */
-@Keep
+@KeepForApi
@KeepForRetraceApi
public final class ArrayReference implements TypeReference {
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 392b4a4..006ff2c 100644
--- a/src/main/java/com/android/tools/r8/references/ClassReference.java
+++ b/src/main/java/com/android/tools/r8/references/ClassReference.java
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.DescriptorUtils;
/** Reference to a class type or interface type. */
-@Keep
+@KeepForApi
@KeepForRetraceApi
public final class ClassReference implements TypeReference {
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 90f4b91..ce27cb9 100644
--- a/src/main/java/com/android/tools/r8/references/FieldReference.java
+++ b/src/main/java/com/android/tools/r8/references/FieldReference.java
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.Objects;
/**
@@ -13,7 +13,7 @@
* <p>A field reference is always fully qualified with both a qualified holder type as well as the
* type of the field.
*/
-@Keep
+@KeepForApi
@KeepForRetraceApi
public final class FieldReference {
private final ClassReference holderClass;
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 3339916..1582789 100644
--- a/src/main/java/com/android/tools/r8/references/MethodReference.java
+++ b/src/main/java/com/android/tools/r8/references/MethodReference.java
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.StringUtils.BraceType;
import java.util.List;
@@ -16,7 +16,7 @@
* <p>A method reference is always fully qualified with both a qualified holder type as well as its
* full list of formal parameters.
*/
-@Keep
+@KeepForApi
@KeepForRetraceApi
public final class MethodReference {
private final ClassReference holderClass;
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 2d1ce52..ed3a3a6 100644
--- a/src/main/java/com/android/tools/r8/references/PackageReference.java
+++ b/src/main/java/com/android/tools/r8/references/PackageReference.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.DescriptorUtils;
import java.util.Objects;
/** Reference to a package. */
-@Keep
+@KeepForApi
@KeepForRetraceApi
public class PackageReference {
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 f7fe50a..c01a5f1 100644
--- a/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
+++ b/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
@@ -3,11 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
@KeepForRetraceApi
public abstract class PrimitiveReference implements TypeReference {
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 d5071d2..9f43c5e 100644
--- a/src/main/java/com/android/tools/r8/references/Reference.java
+++ b/src/main/java/com/android/tools/r8/references/Reference.java
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.DescriptorUtils;
import com.google.common.collect.ImmutableList;
import java.lang.reflect.Constructor;
@@ -23,7 +23,7 @@
*
* <p>No guarantees are made on identity and all references must be compared by {@code equals}.
*/
-@Keep
+@KeepForApi
@KeepForRetraceApi
public final class Reference {
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 36099b9..eb05d39 100644
--- a/src/main/java/com/android/tools/r8/references/TypeReference.java
+++ b/src/main/java/com/android/tools/r8/references/TypeReference.java
@@ -3,11 +3,11 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.references;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.KeepForRetraceApi;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.DescriptorUtils;
-@Keep
+@KeepForApi
@KeepForRetraceApi
public interface TypeReference {
diff --git a/src/main/java/com/android/tools/r8/relocator/Relocator.java b/src/main/java/com/android/tools/r8/relocator/Relocator.java
index 37abb59..a0824ca 100644
--- a/src/main/java/com/android/tools/r8/relocator/Relocator.java
+++ b/src/main/java/com/android/tools/r8/relocator/Relocator.java
@@ -7,7 +7,6 @@
import static com.android.tools.r8.utils.ExceptionUtils.unwrapExecutionException;
import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.dex.Marker;
import com.android.tools.r8.dex.Marker.Tool;
@@ -16,6 +15,7 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.jar.CfApplicationWriter;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.signature.GenericSignatureRewriter;
import com.android.tools.r8.synthesis.SyntheticItems.GlobalSyntheticsStrategy;
import com.android.tools.r8.utils.AndroidApp;
@@ -27,7 +27,7 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
-@Keep
+@KeepForApi
public class Relocator {
private Relocator() {}
diff --git a/src/main/java/com/android/tools/r8/relocator/RelocatorCommand.java b/src/main/java/com/android/tools/r8/relocator/RelocatorCommand.java
index 1684616..312bead 100644
--- a/src/main/java/com/android/tools/r8/relocator/RelocatorCommand.java
+++ b/src/main/java/com/android/tools/r8/relocator/RelocatorCommand.java
@@ -11,9 +11,9 @@
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.Diagnostic;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.graph.DexItemFactory;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.references.ClassReference;
@@ -41,7 +41,7 @@
import java.util.Collection;
import java.util.Set;
-@Keep
+@KeepForApi
public class RelocatorCommand {
private static final String THREAD_COUNT_FLAG = "--thread-count";
@@ -167,7 +167,7 @@
return mapping;
}
- @Keep
+ @KeepForApi
public static class Builder {
private final AndroidApp.Builder app;
diff --git a/src/main/java/com/android/tools/r8/retrace/FinishedPartitionMappingCallback.java b/src/main/java/com/android/tools/r8/retrace/FinishedPartitionMappingCallback.java
index 6c4c906..40befd9 100644
--- a/src/main/java/com/android/tools/r8/retrace/FinishedPartitionMappingCallback.java
+++ b/src/main/java/com/android/tools/r8/retrace/FinishedPartitionMappingCallback.java
@@ -5,13 +5,13 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/***
* Interface for registering a callback when a retracing operation is finished.
*/
@FunctionalInterface
-@Keep
+@KeepForApi
public interface FinishedPartitionMappingCallback {
FinishedPartitionMappingCallback EMPTY_INSTANCE = diagnosticsHandler -> {};
diff --git a/src/main/java/com/android/tools/r8/retrace/IllegalClassNameLookupException.java b/src/main/java/com/android/tools/r8/retrace/IllegalClassNameLookupException.java
index 97d77be..1bfd06c 100644
--- a/src/main/java/com/android/tools/r8/retrace/IllegalClassNameLookupException.java
+++ b/src/main/java/com/android/tools/r8/retrace/IllegalClassNameLookupException.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public class IllegalClassNameLookupException extends RuntimeException {
private final String typeName;
diff --git a/src/main/java/com/android/tools/r8/retrace/InvalidMappingFileException.java b/src/main/java/com/android/tools/r8/retrace/InvalidMappingFileException.java
index 86e81e1..c991de0 100644
--- a/src/main/java/com/android/tools/r8/retrace/InvalidMappingFileException.java
+++ b/src/main/java/com/android/tools/r8/retrace/InvalidMappingFileException.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public final class InvalidMappingFileException extends RuntimeException {
public InvalidMappingFileException(Throwable throwable) {
diff --git a/src/main/java/com/android/tools/r8/retrace/MappingPartition.java b/src/main/java/com/android/tools/r8/retrace/MappingPartition.java
index a925cc3..dd5b49a 100644
--- a/src/main/java/com/android/tools/r8/retrace/MappingPartition.java
+++ b/src/main/java/com/android/tools/r8/retrace/MappingPartition.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface MappingPartition {
String getKey();
diff --git a/src/main/java/com/android/tools/r8/retrace/MappingPartitionFromKeySupplier.java b/src/main/java/com/android/tools/r8/retrace/MappingPartitionFromKeySupplier.java
index 9b8c0a1..020ccf7 100644
--- a/src/main/java/com/android/tools/r8/retrace/MappingPartitionFromKeySupplier.java
+++ b/src/main/java/com/android/tools/r8/retrace/MappingPartitionFromKeySupplier.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/***
* Supplier to provide the bytes for a partition specified by a key. Retrace guarantee that the
@@ -13,7 +13,7 @@
*
*/
@FunctionalInterface
-@Keep
+@KeepForApi
public interface MappingPartitionFromKeySupplier {
byte[] get(String key);
diff --git a/src/main/java/com/android/tools/r8/retrace/MappingPartitionMetadata.java b/src/main/java/com/android/tools/r8/retrace/MappingPartitionMetadata.java
index 32fc36d..146e536 100644
--- a/src/main/java/com/android/tools/r8/retrace/MappingPartitionMetadata.java
+++ b/src/main/java/com/android/tools/r8/retrace/MappingPartitionMetadata.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface MappingPartitionMetadata {
byte[] getBytes();
diff --git a/src/main/java/com/android/tools/r8/retrace/MappingSupplier.java b/src/main/java/com/android/tools/r8/retrace/MappingSupplier.java
index 598f71f..d5060a2 100644
--- a/src/main/java/com/android/tools/r8/retrace/MappingSupplier.java
+++ b/src/main/java/com/android/tools/r8/retrace/MappingSupplier.java
@@ -5,10 +5,10 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.MappingSupplierInternal;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface MappingSupplier<T extends MappingSupplier<T>>
extends MappingSupplierBase<T>, MappingSupplierInternal {
diff --git a/src/main/java/com/android/tools/r8/retrace/MappingSupplierAsync.java b/src/main/java/com/android/tools/r8/retrace/MappingSupplierAsync.java
index ba04547..ce65453 100644
--- a/src/main/java/com/android/tools/r8/retrace/MappingSupplierAsync.java
+++ b/src/main/java/com/android/tools/r8/retrace/MappingSupplierAsync.java
@@ -5,9 +5,9 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface MappingSupplierAsync<T extends MappingSupplierAsync<T>>
extends MappingSupplierBase<T> {
diff --git a/src/main/java/com/android/tools/r8/retrace/MappingSupplierBase.java b/src/main/java/com/android/tools/r8/retrace/MappingSupplierBase.java
index 53ed349..36b0d82 100644
--- a/src/main/java/com/android/tools/r8/retrace/MappingSupplierBase.java
+++ b/src/main/java/com/android/tools/r8/retrace/MappingSupplierBase.java
@@ -6,12 +6,12 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.Finishable;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
-@Keep
+@KeepForApi
public interface MappingSupplierBase<T extends MappingSupplierBase<T>> extends Finishable {
/***
diff --git a/src/main/java/com/android/tools/r8/retrace/MappingSupplierBuilder.java b/src/main/java/com/android/tools/r8/retrace/MappingSupplierBuilder.java
index 2a8a646..523f3aa 100644
--- a/src/main/java/com/android/tools/r8/retrace/MappingSupplierBuilder.java
+++ b/src/main/java/com/android/tools/r8/retrace/MappingSupplierBuilder.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public abstract class MappingSupplierBuilder<
P extends MappingSupplier<P>, T extends MappingSupplierBuilder<P, T>> {
diff --git a/src/main/java/com/android/tools/r8/retrace/Partition.java b/src/main/java/com/android/tools/r8/retrace/Partition.java
index 1582b5e..37e4684 100644
--- a/src/main/java/com/android/tools/r8/retrace/Partition.java
+++ b/src/main/java/com/android/tools/r8/retrace/Partition.java
@@ -8,11 +8,11 @@
import static com.android.tools.r8.utils.ExceptionUtils.withMainProgramHandler;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ParseFlagInfo;
import com.android.tools.r8.ParseFlagInfoImpl;
import com.android.tools.r8.ParseFlagPrinter;
import com.android.tools.r8.Version;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.utils.OptionsParsing;
import com.android.tools.r8.utils.OptionsParsing.ParseContext;
import com.android.tools.r8.utils.PartitionMapZipContainer;
@@ -24,7 +24,7 @@
import java.util.List;
/** A tool for creating a partition-map from a proguard map. */
-@Keep
+@KeepForApi
public class Partition {
private static final String USAGE_MESSAGE =
diff --git a/src/main/java/com/android/tools/r8/retrace/PartitionCommand.java b/src/main/java/com/android/tools/r8/retrace/PartitionCommand.java
index 3c5db33..ef47fda 100644
--- a/src/main/java/com/android/tools/r8/retrace/PartitionCommand.java
+++ b/src/main/java/com/android/tools/r8/retrace/PartitionCommand.java
@@ -5,10 +5,10 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.PartitionMapConsumer;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public class PartitionCommand {
private final DiagnosticsHandler diagnosticsHandler;
@@ -41,7 +41,7 @@
return new Builder(new DiagnosticsHandler() {});
}
- @Keep
+ @KeepForApi
public static class Builder {
private final DiagnosticsHandler diagnosticsHandler;
diff --git a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplier.java b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplier.java
index d89ce17..6b6446d 100644
--- a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplier.java
+++ b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplier.java
@@ -5,14 +5,14 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.MapVersion;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.retrace.internal.PartitionMappingSupplierBase;
-@Keep
+@KeepForApi
public class PartitionMappingSupplier extends PartitionMappingSupplierBase<PartitionMappingSupplier>
implements MappingSupplier<PartitionMappingSupplier> {
@@ -41,7 +41,7 @@
*
* @param classReference The minified class reference allowed to be lookup up.
*/
- @Keep
+ @KeepForApi
@Override
public PartitionMappingSupplier registerClassUse(
DiagnosticsHandler diagnosticsHandler, ClassReference classReference) {
@@ -53,7 +53,7 @@
*
* @param methodReference The minified method reference allowed to be lookup up.
*/
- @Keep
+ @KeepForApi
@Override
public PartitionMappingSupplier registerMethodUse(
DiagnosticsHandler diagnosticsHandler, MethodReference methodReference) {
@@ -65,7 +65,7 @@
*
* @param fieldReference The minified field reference allowed to be lookup up.
*/
- @Keep
+ @KeepForApi
@Override
public PartitionMappingSupplier registerFieldUse(
DiagnosticsHandler diagnosticsHandler, FieldReference fieldReference) {
@@ -99,7 +99,7 @@
return new NoMetadataBuilder(mapVersion);
}
- @Keep
+ @KeepForApi
public abstract static class NoMetadataBuilderBase<B extends NoMetadataBuilderBase<B>>
extends PartitionMappingSupplierBuilderBase<B> {
@@ -120,7 +120,7 @@
}
}
- @Keep
+ @KeepForApi
public static class NoMetadataBuilder extends NoMetadataBuilderBase<NoMetadataBuilder> {
private NoMetadataBuilder(MapVersion fallbackMapVersion) {
@@ -147,7 +147,7 @@
}
}
- @Keep
+ @KeepForApi
public static class Builder extends NoMetadataBuilderBase<Builder> {
private byte[] metadata;
diff --git a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java
index 6c16ab7..5093d80 100644
--- a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java
+++ b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java
@@ -5,14 +5,14 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.MapVersion;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.retrace.internal.PartitionMappingSupplierBase;
-@Keep
+@KeepForApi
public class PartitionMappingSupplierAsync
extends PartitionMappingSupplierBase<PartitionMappingSupplierAsync>
implements MappingSupplierAsync<PartitionMappingSupplierAsync> {
@@ -38,7 +38,6 @@
*
* @param classReference The minified class reference allowed to be lookup up.
*/
- @Keep
@Override
public PartitionMappingSupplierAsync registerClassUse(
DiagnosticsHandler diagnosticsHandler, ClassReference classReference) {
@@ -50,7 +49,6 @@
*
* @param methodReference The minified method reference allowed to be lookup up.
*/
- @Keep
@Override
public PartitionMappingSupplierAsync registerMethodUse(
DiagnosticsHandler diagnosticsHandler, MethodReference methodReference) {
@@ -62,7 +60,6 @@
*
* @param fieldReference The minified field reference allowed to be lookup up.
*/
- @Keep
@Override
public PartitionMappingSupplierAsync registerFieldUse(
DiagnosticsHandler diagnosticsHandler, FieldReference fieldReference) {
@@ -84,7 +81,7 @@
return createRetracerFromPartitionSupplier(diagnosticsHandler, supplier);
}
- @Keep
+ @KeepForApi
public static class Builder extends PartitionMappingSupplierBuilderBase<Builder> {
private byte[] metadata;
diff --git a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierBuilderBase.java b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierBuilderBase.java
index 1dc2e14..c684ddc 100644
--- a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierBuilderBase.java
+++ b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierBuilderBase.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.naming.MapVersion;
-@Keep
+@KeepForApi
public abstract class PartitionMappingSupplierBuilderBase<
T extends PartitionMappingSupplierBuilderBase<T>> {
diff --git a/src/main/java/com/android/tools/r8/retrace/PrepareMappingPartitionsCallback.java b/src/main/java/com/android/tools/r8/retrace/PrepareMappingPartitionsCallback.java
index 89c6161..75c5ded 100644
--- a/src/main/java/com/android/tools/r8/retrace/PrepareMappingPartitionsCallback.java
+++ b/src/main/java/com/android/tools/r8/retrace/PrepareMappingPartitionsCallback.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/***
* Callback to be called to prepare all partitions registered by
@@ -12,7 +12,7 @@
* {@link MappingPartitionFromKeySupplier}.
*/
@FunctionalInterface
-@Keep
+@KeepForApi
public interface PrepareMappingPartitionsCallback {
PrepareMappingPartitionsCallback EMPTY_INSTANCE = () -> {};
diff --git a/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitioner.java b/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitioner.java
index 5805ae8..541f6da0 100644
--- a/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitioner.java
+++ b/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitioner.java
@@ -5,11 +5,11 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.ProguardMapPartitionerOnClassNameToText.ProguardMapPartitionerBuilderImpl;
import java.io.IOException;
-@Keep
+@KeepForApi
public interface ProguardMapPartitioner {
MappingPartitionMetadata run() throws IOException;
diff --git a/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitionerBuilder.java b/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitionerBuilder.java
index a7d9df8..ce347be 100644
--- a/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitionerBuilder.java
+++ b/src/main/java/com/android/tools/r8/retrace/ProguardMapPartitionerBuilder.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.function.Consumer;
-@Keep
+@KeepForApi
public interface ProguardMapPartitionerBuilder<
B extends ProguardMapPartitionerBuilder<B, P>, P extends ProguardMapPartitioner> {
diff --git a/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java b/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
index 6e73c56..679e93c 100644
--- a/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
+++ b/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.google.common.primitives.Bytes;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
@@ -16,7 +16,7 @@
import java.nio.file.Path;
/** Interface for producing a string format of a mapping file. */
-@Keep
+@KeepForApi
public interface ProguardMapProducer {
InputStream get() throws IOException;
diff --git a/src/main/java/com/android/tools/r8/retrace/ProguardMappingSupplier.java b/src/main/java/com/android/tools/r8/retrace/ProguardMappingSupplier.java
index 7b3e657..5edd21f 100644
--- a/src/main/java/com/android/tools/r8/retrace/ProguardMappingSupplier.java
+++ b/src/main/java/com/android/tools/r8/retrace/ProguardMappingSupplier.java
@@ -4,17 +4,17 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.ProguardMappingSupplierBuilderImpl;
-@Keep
+@KeepForApi
public abstract class ProguardMappingSupplier implements MappingSupplier<ProguardMappingSupplier> {
public static Builder builder() {
return new ProguardMappingSupplierBuilderImpl();
}
- @Keep
+ @KeepForApi
public abstract static class Builder
extends MappingSupplierBuilder<ProguardMappingSupplier, Builder> {
diff --git a/src/main/java/com/android/tools/r8/retrace/RegisterMappingPartitionCallback.java b/src/main/java/com/android/tools/r8/retrace/RegisterMappingPartitionCallback.java
index e411883..76dc9c8 100644
--- a/src/main/java/com/android/tools/r8/retrace/RegisterMappingPartitionCallback.java
+++ b/src/main/java/com/android/tools/r8/retrace/RegisterMappingPartitionCallback.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/***
* Interface for registering a mapping partition to be used later.
*/
@FunctionalInterface
-@Keep
+@KeepForApi
public interface RegisterMappingPartitionCallback {
RegisterMappingPartitionCallback EMPTY_INSTANCE = key -> {};
diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index 4646f16..933b60a 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -8,11 +8,11 @@
import com.android.tools.r8.Diagnostic;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ParseFlagInfo;
import com.android.tools.r8.ParseFlagInfoImpl;
import com.android.tools.r8.ParseFlagPrinter;
import com.android.tools.r8.Version;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.RetraceAbortException;
import com.android.tools.r8.retrace.internal.RetraceBase;
import com.android.tools.r8.retrace.internal.StackTraceElementStringProxy;
@@ -44,7 +44,7 @@
* <p>This is the interface for getting de-obfuscating stack traces, similar to the proguard retrace
* tool.
*/
-@Keep
+@KeepForApi
public class Retrace<T, ST extends StackTraceElementProxy<T, ST>> extends RetraceBase<T, ST> {
private static final String USAGE_MESSAGE =
@@ -426,7 +426,7 @@
return new Builder<>();
}
- @Keep
+ @KeepForApi
public static class Builder<T, ST extends StackTraceElementProxy<T, ST>>
extends RetraceBuilderBase<Builder<T, ST>, T, ST> {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceAsync.java b/src/main/java/com/android/tools/r8/retrace/RetraceAsync.java
index 00e07bd..90afa4f 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceAsync.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceAsync.java
@@ -5,12 +5,12 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.RetraceBase;
import java.util.List;
/** An async retrace tool for obfuscated stack traces. */
-@Keep
+@KeepForApi
public class RetraceAsync<T, ST extends StackTraceElementProxy<T, ST>> extends RetraceBase<T, ST> {
private final MappingSupplierAsync<?> mappingSupplier;
@@ -97,7 +97,7 @@
context);
}
- @Keep
+ @KeepForApi
public static class Builder<T, ST extends StackTraceElementProxy<T, ST>>
extends RetraceBuilderBase<Builder<T, ST>, T, ST> {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceAsyncAction.java b/src/main/java/com/android/tools/r8/retrace/RetraceAsyncAction.java
index a6088e8..8a7c41b 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceAsyncAction.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceAsyncAction.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceAsyncAction {
void execute(MappingPartitionFromKeySupplier supplier);
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceAsyncResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceAsyncResult.java
index 146c3df..2e663a1 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceAsyncResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceAsyncResult.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceAsyncResult<T> {
T getResult(MappingPartitionFromKeySupplier supplier);
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceBuilderBase.java b/src/main/java/com/android/tools/r8/retrace/RetraceBuilderBase.java
index 1deadfe..b4fd983 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceBuilderBase.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceBuilderBase.java
@@ -5,9 +5,9 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public abstract class RetraceBuilderBase<
B extends RetraceBuilderBase<B, T, ST>, T, ST extends StackTraceElementProxy<T, ST>> {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java
index f7830c3..2dbe0f0 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java
@@ -3,13 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.TypeReference;
import java.util.List;
import java.util.OptionalInt;
-@Keep
+@KeepForApi
public interface RetraceClassElement extends RetraceElement<RetraceClassResult> {
RetracedClassReference getRetracedClass();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
index c2bd31a..7ff088e 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.TypeReference;
import java.util.List;
import java.util.OptionalInt;
-@Keep
+@KeepForApi
public interface RetraceClassResult extends RetraceResult<RetraceClassElement> {
RetraceFieldResult lookupField(String fieldName);
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceCommand.java b/src/main/java/com/android/tools/r8/retrace/RetraceCommand.java
index c491aba..c4ccca6 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceCommand.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceCommand.java
@@ -5,13 +5,13 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.StackTraceRegularExpressionParser;
import com.android.tools.r8.utils.Box;
import java.util.List;
import java.util.function.Consumer;
-@Keep
+@KeepForApi
public class RetraceCommand {
private final StackTraceSupplier stackTraceSupplier;
@@ -72,7 +72,7 @@
return new Builder(new DiagnosticsHandler() {});
}
- @Keep
+ @KeepForApi
public static class Builder {
private boolean isVerbose;
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceElement.java
index d069fcc..916d4a6 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceElement.java
@@ -3,14 +3,14 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.retrace;
-import com.android.tools.r8.KeepForSubclassing;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
* Base interface for any element in a retrace result.
*
* <p>The element represents an unambiguous retracing.
*/
-@KeepForSubclassing
+@KeepForApi
public interface RetraceElement<R extends RetraceResult<?>> {
R getParentResult();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFailedException.java b/src/main/java/com/android/tools/r8/retrace/RetraceFailedException.java
index 94b61ee..2c03560 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFailedException.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceFailedException.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
* Exception thrown when retrace failed to complete because of errors previously reported through
* {@link com.android.tools.r8.DiagnosticsHandler}.
*/
-@Keep
+@KeepForApi
public class RetraceFailedException extends Exception {
public RetraceFailedException() {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFieldElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceFieldElement.java
index d51e175..d722b04 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFieldElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceFieldElement.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceFieldElement extends RetraceElement<RetraceFieldResult> {
boolean isUnknown();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
index 0dc3cc5..9fcc57b 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceFieldResult extends RetraceResult<RetraceFieldElement> {}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFrameElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceFrameElement.java
index a985fe1..d03c075 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFrameElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceFrameElement.java
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;
-@Keep
+@KeepForApi
public interface RetraceFrameElement extends RetraceElement<RetraceFrameResult> {
boolean isUnknown();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java
index bfe0967..ea18505 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceFrameResult extends RetraceResult<RetraceFrameElement> {}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceInvalidRewriteFrameDiagnostics.java b/src/main/java/com/android/tools/r8/retrace/RetraceInvalidRewriteFrameDiagnostics.java
index ace1b86..53a9e1c 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceInvalidRewriteFrameDiagnostics.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceInvalidRewriteFrameDiagnostics.java
@@ -5,11 +5,11 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class RetraceInvalidRewriteFrameDiagnostics implements Diagnostic {
private final int numberOfFramesToRemove;
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceInvalidStackTraceLineDiagnostics.java b/src/main/java/com/android/tools/r8/retrace/RetraceInvalidStackTraceLineDiagnostics.java
index e18c6e6..cd6f603 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceInvalidStackTraceLineDiagnostics.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceInvalidStackTraceLineDiagnostics.java
@@ -5,12 +5,12 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.position.TextPosition;
-@Keep
+@KeepForApi
public class RetraceInvalidStackTraceLineDiagnostics implements Diagnostic {
private static final String NULL_STACK_TRACE_LINE_MESSAGE = "The stack trace line is <null>";
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceMethodElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceMethodElement.java
index 132a200..05b946c 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceMethodElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceMethodElement.java
@@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceMethodElement extends RetraceElement<RetraceMethodResult> {
boolean isUnknown();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
index f06fad3..feff0ad 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.OptionalInt;
-@Keep
+@KeepForApi
public interface RetraceMethodResult extends RetraceResult<RetraceMethodElement> {
RetraceFrameResult narrowByPosition(RetraceStackTraceContext context, OptionalInt position);
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceOptions.java b/src/main/java/com/android/tools/r8/retrace/RetraceOptions.java
index 513b39f..3258ac7 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceOptions.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceOptions.java
@@ -7,13 +7,13 @@
import static com.android.tools.r8.retrace.internal.StackTraceRegularExpressionParser.DEFAULT_REGULAR_EXPRESSION;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
* The base options for running retrace with support for continuously retrace strings without
* parsing the proguard map multiple times.
*/
-@Keep
+@KeepForApi
public class RetraceOptions {
private final boolean isVerbose;
@@ -72,7 +72,7 @@
return DEFAULT_REGULAR_EXPRESSION;
}
- @Keep
+ @KeepForApi
public static class Builder {
private boolean isVerbose;
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracePartitionException.java b/src/main/java/com/android/tools/r8/retrace/RetracePartitionException.java
index d441e22..c463226 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracePartitionException.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracePartitionException.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public class RetracePartitionException extends RuntimeException {
public RetracePartitionException(String message) {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceResult.java
index cda85ce..dbafd92 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceResult.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Stream;
@@ -17,7 +17,7 @@
* itself provide methods for providing contextual information to further restrict the ambiguity of
* the result.
*/
-@Keep
+@KeepForApi
public interface RetraceResult<E extends RetraceElement<?>> {
/** Basic operation over 'elements' which represent a possible non-ambiguous retracing. */
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceResultWithContext.java b/src/main/java/com/android/tools/r8/retrace/RetraceResultWithContext.java
index 3961591..6c468d4 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceResultWithContext.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceResultWithContext.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceResultWithContext {
/**
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResult.java
index b788289..f63e73f 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResult.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
@@ -17,7 +17,7 @@
* https://r8.googlesource.com/r8/+/main/doc/retrace.md for what information Retrace uses to discard
* frames.
*/
-@Keep
+@KeepForApi
public interface RetraceStackFrameAmbiguousResult<T> {
/**
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResultWithContext.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResultWithContext.java
index f856cbd..9d8c1c4 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResultWithContext.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameAmbiguousResultWithContext.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceStackFrameAmbiguousResultWithContext<T>
extends RetraceStackFrameAmbiguousResult<T>, RetraceResultWithContext {}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResult.java
index ac0b6fb..b6a6551 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResult.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.List;
import java.util.function.Consumer;
@@ -14,7 +14,7 @@
* <p>It is guaranteed to be non-ambiguous. It can have more than one frame if it is an inline or an
* outline expansion. It can be empty, fx. if the frames are compiler synthesized.
*/
-@Keep
+@KeepForApi
public interface RetraceStackFrameResult<T> {
/**
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResultWithContext.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResultWithContext.java
index 4a63db0..95a0138 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResultWithContext.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackFrameResultWithContext.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceStackFrameResultWithContext<T>
extends RetraceStackFrameResult<T>, RetraceResultWithContext {}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceContext.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceContext.java
index 5af984a..3083865 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceContext.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceContext.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.RetraceStackTraceContextImpl;
-@Keep
+@KeepForApi
public interface RetraceStackTraceContext {
static RetraceStackTraceContext empty() {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxy.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxy.java
index 714e2b9..c77d194 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxy.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxy.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.List;
-@Keep
+@KeepForApi
public interface RetraceStackTraceElementProxy<T, ST extends StackTraceElementProxy<T, ST>>
extends Comparable<RetraceStackTraceElementProxy<T, ST>> {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxyResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxyResult.java
index 1db1f08..9ab2eab 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxyResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceElementProxyResult.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.stream.Stream;
-@Keep
+@KeepForApi
public interface RetraceStackTraceElementProxyResult<T, ST extends StackTraceElementProxy<T, ST>> {
Stream<? extends RetraceStackTraceElementProxy<T, ST>> stream();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceResult.java
index adcb09a..02d079b 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceStackTraceResult.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.List;
import java.util.function.Consumer;
@@ -13,7 +13,7 @@
*
* <p>The number of elements is the same as the number of input frames.
*/
-@Keep
+@KeepForApi
public interface RetraceStackTraceResult<T> extends RetraceResultWithContext {
/**
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionElement.java
index 1af093c..8ef3268 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionElement.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceThrownExceptionElement
extends RetraceElement<RetraceThrownExceptionResult> {
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionResult.java
index b53ec9b..4cfe5e0 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceThrownExceptionResult.java
@@ -4,8 +4,8 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceThrownExceptionResult
extends RetraceResult<RetraceThrownExceptionElement> {}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceTypeElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceTypeElement.java
index 2df0a4c..ceb061b 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceTypeElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceTypeElement.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceTypeElement extends RetraceElement<RetraceTypeResult> {
RetracedTypeReference getType();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceTypeResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceTypeResult.java
index 7925ff6..69f9605 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceTypeResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceTypeResult.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceTypeResult extends RetraceResult<RetraceTypeElement> {}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceUnknownJsonMappingInformationResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceUnknownJsonMappingInformationResult.java
index 2afa333..49c36bf 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceUnknownJsonMappingInformationResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceUnknownJsonMappingInformationResult.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.function.Consumer;
import java.util.stream.Stream;
-@Keep
+@KeepForApi
public interface RetraceUnknownJsonMappingInformationResult {
/** Basic operation over 'elements' which represent a possible non-ambiguous retracing. */
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMapVersionDiagnostic.java b/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMapVersionDiagnostic.java
index 9c1142b..4a9fcaf 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMapVersionDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMapVersionDiagnostic.java
@@ -5,12 +5,12 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.Version;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class RetraceUnknownMapVersionDiagnostic implements Diagnostic {
private final String versionName;
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMappingInformationElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMappingInformationElement.java
index 3bba032..363e917 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMappingInformationElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceUnknownMappingInformationElement.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetraceUnknownMappingInformationElement {
String getIdentifier();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedClassMemberReference.java b/src/main/java/com/android/tools/r8/retrace/RetracedClassMemberReference.java
index b4067b7..a2671bb 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedClassMemberReference.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedClassMemberReference.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetracedClassMemberReference {
RetracedClassReference getHolderClass();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedClassReference.java b/src/main/java/com/android/tools/r8/retrace/RetracedClassReference.java
index 2c030f7..b943a50 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedClassReference.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedClassReference.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
-@Keep
+@KeepForApi
public interface RetracedClassReference {
boolean isUnknown();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedFieldReference.java b/src/main/java/com/android/tools/r8/retrace/RetracedFieldReference.java
index 1e942d7..6e2ec15 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedFieldReference.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedFieldReference.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.TypeReference;
-@Keep
+@KeepForApi
public interface RetracedFieldReference extends RetracedClassMemberReference {
boolean isUnknown();
@@ -19,7 +19,7 @@
String getFieldName();
- @Keep
+ @KeepForApi
interface KnownRetracedFieldReference extends RetracedFieldReference {
TypeReference getFieldType();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedMethodReference.java b/src/main/java/com/android/tools/r8/retrace/RetracedMethodReference.java
index d6644cb..1542606 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedMethodReference.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedMethodReference.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.TypeReference;
import java.util.List;
-@Keep
+@KeepForApi
public interface RetracedMethodReference
extends RetracedClassMemberReference, Comparable<RetracedMethodReference> {
@@ -25,7 +25,7 @@
int getOriginalPositionOrDefault(int defaultPosition);
- @Keep
+ @KeepForApi
interface KnownRetracedMethodReference extends RetracedMethodReference {
boolean isVoid();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedSingleFrame.java b/src/main/java/com/android/tools/r8/retrace/RetracedSingleFrame.java
index 3b17336..ecefee9 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedSingleFrame.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedSingleFrame.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetracedSingleFrame {
RetracedMethodReference getMethodReference();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java b/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java
index d677cb8..1331bc7 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedSourceFile.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
-@Keep
+@KeepForApi
public interface RetracedSourceFile {
boolean hasRetraceResult();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetracedTypeReference.java b/src/main/java/com/android/tools/r8/retrace/RetracedTypeReference.java
index f167483..5c29891 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetracedTypeReference.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetracedTypeReference.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.TypeReference;
-@Keep
+@KeepForApi
public interface RetracedTypeReference {
boolean isVoid();
diff --git a/src/main/java/com/android/tools/r8/retrace/Retracer.java b/src/main/java/com/android/tools/r8/retrace/Retracer.java
index 633b143..bc764c6 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retracer.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retracer.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
@@ -13,7 +13,7 @@
import java.util.OptionalInt;
/** This is the main api interface for retrace. */
-@Keep
+@KeepForApi
public interface Retracer {
RetraceClassResult retraceClass(ClassReference classReference);
diff --git a/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxy.java b/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxy.java
index 263ca19..2d852fd 100644
--- a/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxy.java
+++ b/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxy.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.references.TypeReference;
@@ -13,7 +13,7 @@
import java.util.ArrayList;
import java.util.List;
-@Keep
+@KeepForApi
public abstract class StackTraceElementProxy<T, ST extends StackTraceElementProxy<T, ST>> {
public abstract boolean hasClassName();
diff --git a/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxyRetracer.java b/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxyRetracer.java
index e792ef0..fc6dcf2 100644
--- a/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxyRetracer.java
+++ b/src/main/java/com/android/tools/r8/retrace/StackTraceElementProxyRetracer.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.StackTraceElementProxyRetracerImpl;
-@Keep
+@KeepForApi
public interface StackTraceElementProxyRetracer<T, ST extends StackTraceElementProxy<T, ST>> {
RetraceStackTraceElementProxyResult<T, ST> retrace(ST element, RetraceStackTraceContext context);
diff --git a/src/main/java/com/android/tools/r8/retrace/StackTraceLineParser.java b/src/main/java/com/android/tools/r8/retrace/StackTraceLineParser.java
index 92d1dca..910dd0f 100644
--- a/src/main/java/com/android/tools/r8/retrace/StackTraceLineParser.java
+++ b/src/main/java/com/android/tools/r8/retrace/StackTraceLineParser.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.StackTraceElementStringProxy;
import com.android.tools.r8.retrace.internal.StackTraceRegularExpressionParser;
-@Keep
+@KeepForApi
public interface StackTraceLineParser<T, ST extends StackTraceElementProxy<T, ST>> {
ST parse(T stackTraceLine);
diff --git a/src/main/java/com/android/tools/r8/retrace/StackTraceSupplier.java b/src/main/java/com/android/tools/r8/retrace/StackTraceSupplier.java
index 9940c5c..573f6d7 100644
--- a/src/main/java/com/android/tools/r8/retrace/StackTraceSupplier.java
+++ b/src/main/java/com/android/tools/r8/retrace/StackTraceSupplier.java
@@ -4,10 +4,10 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.util.List;
-@Keep
+@KeepForApi
@FunctionalInterface
public interface StackTraceSupplier {
diff --git a/src/main/java/com/android/tools/r8/retrace/StreamSupplier.java b/src/main/java/com/android/tools/r8/retrace/StreamSupplier.java
index 4a51497..2b351e9 100644
--- a/src/main/java/com/android/tools/r8/retrace/StreamSupplier.java
+++ b/src/main/java/com/android/tools/r8/retrace/StreamSupplier.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.retrace;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/**
* Supplier of input lines to be retraced.
@@ -12,7 +12,7 @@
* @param <E> the type of the {@link Throwable}
*/
@FunctionalInterface
-@Keep
+@KeepForApi
public interface StreamSupplier<E extends Throwable> {
String getNext() throws E;
diff --git a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
index 3f37a84..2229315 100644
--- a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.retrace.internal.RetraceStackFrameResultWithContextImpl;
import com.android.tools.r8.retrace.internal.StackTraceElementStringProxy;
import com.android.tools.r8.utils.StringUtils;
@@ -20,7 +20,7 @@
* Specialized Retrace class for retracing string retraces, with special handling for appending
* additional information into the strings, such as OR's for ambiguous lines.
*/
-@Keep
+@KeepForApi
public class StringRetrace extends Retrace<String, StackTraceElementStringProxy> {
StringRetrace(
diff --git a/src/main/java/com/android/tools/r8/startup/StartupClassBuilder.java b/src/main/java/com/android/tools/r8/startup/StartupClassBuilder.java
index 43a63b4..b390a0c 100644
--- a/src/main/java/com/android/tools/r8/startup/StartupClassBuilder.java
+++ b/src/main/java/com/android/tools/r8/startup/StartupClassBuilder.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.startup;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
/** Interface for providing information about a startup class to the compiler. */
-@Keep
+@KeepForApi
public interface StartupClassBuilder {
StartupClassBuilder setClassReference(ClassReference classReference);
diff --git a/src/main/java/com/android/tools/r8/startup/StartupMethodBuilder.java b/src/main/java/com/android/tools/r8/startup/StartupMethodBuilder.java
index 0c1efe2..6cdf52e 100644
--- a/src/main/java/com/android/tools/r8/startup/StartupMethodBuilder.java
+++ b/src/main/java/com/android/tools/r8/startup/StartupMethodBuilder.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.startup;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.MethodReference;
/** Interface for providing information about a startup method to the compiler. */
-@Keep
+@KeepForApi
public interface StartupMethodBuilder {
StartupMethodBuilder setMethodReference(MethodReference methodReference);
diff --git a/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java b/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java
index 3ee53c7..cc59960 100644
--- a/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java
+++ b/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java
@@ -4,13 +4,13 @@
package com.android.tools.r8.startup;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.TextInputStream;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.profile.art.HumanReadableArtProfileParserBuilder;
import java.util.function.Consumer;
/** Interface for providing a startup profile to the compiler. */
-@Keep
+@KeepForApi
public interface StartupProfileBuilder {
/** API for adding information about a startup class to the compiler. */
diff --git a/src/main/java/com/android/tools/r8/startup/StartupProfileProvider.java b/src/main/java/com/android/tools/r8/startup/StartupProfileProvider.java
index 39ad8fc..b77e1c0 100644
--- a/src/main/java/com/android/tools/r8/startup/StartupProfileProvider.java
+++ b/src/main/java/com/android/tools/r8/startup/StartupProfileProvider.java
@@ -4,11 +4,11 @@
package com.android.tools.r8.startup;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.Resource;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
/** Interface for providing a startup profile to the compiler. */
-@Keep
+@KeepForApi
public interface StartupProfileProvider extends Resource {
/** Provides the startup profile by callbacks to the given {@param startupProfileBuilder}. */
diff --git a/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java b/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
index 144e210..c5ab7a9 100644
--- a/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
@@ -5,10 +5,10 @@
package com.android.tools.r8.startup.diagnostic;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexReference;
import com.android.tools.r8.graph.DexString;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.profile.startup.profile.StartupProfileClassRule;
@@ -19,7 +19,7 @@
import java.util.List;
import java.util.Set;
-@Keep
+@KeepForApi
public class MissingStartupProfileItemsDiagnostic implements Diagnostic {
private final List<DexReference> missingStartupItems;
diff --git a/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java b/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java
index ad30e62..50a016c 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java
@@ -6,7 +6,6 @@
import static com.android.tools.r8.utils.CovariantReturnTypeUtils.modelLibraryMethodsWithCovariantReturnTypes;
import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ProgramResource;
import com.android.tools.r8.ProgramResource.Kind;
import com.android.tools.r8.ProgramResourceProvider;
@@ -17,6 +16,7 @@
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.CommandLineOrigin;
import com.android.tools.r8.shaking.MainDexInfo;
import com.android.tools.r8.synthesis.SyntheticItems.GlobalSyntheticsStrategy;
@@ -31,7 +31,7 @@
import java.util.Set;
import java.util.function.Consumer;
-@Keep
+@KeepForApi
public class TraceReferences {
public static void run(TraceReferencesCommand command) throws CompilationFailedException {
diff --git a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCheckConsumer.java b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCheckConsumer.java
index 6912b15..8ab96e8 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCheckConsumer.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCheckConsumer.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.tracereferences;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.diagnostic.DefinitionContext;
import com.android.tools.r8.diagnostic.MissingDefinitionsDiagnostic;
import com.android.tools.r8.diagnostic.internal.DefinitionContextUtils;
@@ -13,6 +12,7 @@
import com.android.tools.r8.diagnostic.internal.MissingDefinitionsDiagnosticImpl;
import com.android.tools.r8.diagnostic.internal.MissingFieldInfoImpl;
import com.android.tools.r8.diagnostic.internal.MissingMethodInfoImpl;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
@@ -28,7 +28,7 @@
* com.android.tools.r8.diagnostic.MissingDefinitionsDiagnostic} as an error, if any missing
* definitions were found.
*/
-@Keep
+@KeepForApi
public class TraceReferencesCheckConsumer extends TraceReferencesConsumer.ForwardingConsumer {
private final Map<ClassReference, Map<Object, DefinitionContext>> missingClassesContexts =
diff --git a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java
index ddd9e3f..28deeb3 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesCommand.java
@@ -13,12 +13,12 @@
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.Diagnostic;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ProgramResource;
import com.android.tools.r8.ProgramResource.Kind;
import com.android.tools.r8.ProgramResourceProvider;
import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.dump.DumpOptions;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.ArchiveResourceProvider;
@@ -42,7 +42,7 @@
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
-@Keep
+@KeepForApi
public class TraceReferencesCommand {
private final boolean printHelp;
private final boolean printVersion;
@@ -116,7 +116,7 @@
return printVersion;
}
- @Keep
+ @KeepForApi
public static class Builder {
private boolean printHelp = false;
diff --git a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesConsumer.java b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesConsumer.java
index e5251f7..2f6e23d 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesConsumer.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesConsumer.java
@@ -4,22 +4,21 @@
package com.android.tools.r8.tracereferences;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
-import com.android.tools.r8.KeepForSubclassing;
import com.android.tools.r8.diagnostic.DefinitionContext;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.PackageReference;
/** Consumer interface for recording references */
-@KeepForSubclassing
+@KeepForApi
public interface TraceReferencesConsumer {
/**
* Interface for asking for the access flags for a traced reference when the definition is present
*/
- @Keep
+ @KeepForApi
interface AccessFlags {
boolean isStatic();
@@ -34,21 +33,21 @@
* Interface for asking for additional class information for a traced class when the definition is
* found.
*/
- @Keep
+ @KeepForApi
interface ClassAccessFlags extends AccessFlags {
boolean isInterface();
boolean isEnum();
}
- @Keep
+ @KeepForApi
interface FieldAccessFlags extends AccessFlags {}
- @Keep
+ @KeepForApi
interface MethodAccessFlags extends AccessFlags {}
/** Interface implemented by all references reported */
- @Keep
+ @KeepForApi
interface TracedReference<T, F> {
/** Returns if the reference does not have a definition in the program traced. */
boolean isMissingDefinition();
@@ -67,13 +66,13 @@
F getAccessFlags();
}
- @Keep
+ @KeepForApi
interface TracedClass extends TracedReference<ClassReference, ClassAccessFlags> {}
- @Keep
+ @KeepForApi
interface TracedField extends TracedReference<FieldReference, FieldAccessFlags> {}
- @Keep
+ @KeepForApi
interface TracedMethod extends TracedReference<MethodReference, MethodAccessFlags> {}
/**
@@ -140,7 +139,7 @@
}
/** Forwarding consumer to delegate to an optional existing consumer. */
- @Keep
+ @KeepForApi
class ForwardingConsumer implements TraceReferencesConsumer {
private static final TraceReferencesConsumer EMPTY_CONSUMER = new ForwardingConsumer(null);
diff --git a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesKeepRules.java b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesKeepRules.java
index 52ea13c..40fe9c3 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesKeepRules.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/TraceReferencesKeepRules.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.tracereferences;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.StringConsumer.FileConsumer;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.tracereferences.internal.TraceReferencesResult;
import java.nio.file.Path;
@@ -23,7 +23,7 @@
* .build();
* </pre>
*/
-@Keep
+@KeepForApi
public class TraceReferencesKeepRules extends TraceReferencesConsumer.ForwardingConsumer {
private final TraceReferencesResult.Builder traceReferencesResultBuilder;
@@ -49,7 +49,7 @@
*
* <p>A builder is obtained by calling {@link TraceReferencesKeepRules#builder}.
*/
- @Keep
+ @KeepForApi
public static class Builder {
private StringConsumer consumer;
private boolean allowObfuscation;
diff --git a/src/main/java/com/android/tools/r8/utils/ArchiveResourceProvider.java b/src/main/java/com/android/tools/r8/utils/ArchiveResourceProvider.java
index 9311d46..6532b8f 100644
--- a/src/main/java/com/android/tools/r8/utils/ArchiveResourceProvider.java
+++ b/src/main/java/com/android/tools/r8/utils/ArchiveResourceProvider.java
@@ -8,12 +8,12 @@
import com.android.tools.r8.DataDirectoryResource;
import com.android.tools.r8.DataEntryResource;
import com.android.tools.r8.DataResourceProvider;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ProgramResource;
import com.android.tools.r8.ProgramResource.Kind;
import com.android.tools.r8.ProgramResourceProvider;
import com.android.tools.r8.ResourceException;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
@@ -33,7 +33,7 @@
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
-@Keep // TODO(b/121121779) Remove keep-annotation.
+@KeepForApi
public class ArchiveResourceProvider implements ProgramResourceProvider, DataResourceProvider {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java b/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java
index a73aeb5..e170d55 100644
--- a/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java
@@ -5,8 +5,8 @@
package com.android.tools.r8.utils;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
import com.android.tools.r8.ResourceException;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
@@ -18,7 +18,7 @@
* conversion to a diagnostic, the full exception stack can be obtained in the suppressed exceptions
* on the inner-most cause.
*/
-@Keep
+@KeepForApi
public class ExceptionDiagnostic implements Diagnostic {
private final Throwable cause;
diff --git a/src/main/java/com/android/tools/r8/utils/StackTraceUtils.java b/src/main/java/com/android/tools/r8/utils/StackTraceUtils.java
index 009c490..98112ed 100644
--- a/src/main/java/com/android/tools/r8/utils/StackTraceUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/StackTraceUtils.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.utils;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
-@Keep
+@KeepForApi
public class StackTraceUtils {
private static final String pathToWriteStacktrace =
diff --git a/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java b/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java
index 6476a5a..6067092 100644
--- a/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java
@@ -4,20 +4,20 @@
package com.android.tools.r8.utils;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
/**
* A diagnostic message.
*
- * <p>This string diagnostic is used to report various error messages from the compiler. There is
- * no guarantee that the message will remain the same or that the issue will continue to be reported
- * by way of a {@link StringDiagnostic}. If there is a need to reliably identify a particular kind
- * of error which is currently reported via a {@link StringDiagnostic}, then please file a feature
+ * <p>This string diagnostic is used to report various error messages from the compiler. There is no
+ * guarantee that the message will remain the same or that the issue will continue to be reported by
+ * way of a {@link StringDiagnostic}. If there is a need to reliably identify a particular kind of
+ * error which is currently reported via a {@link StringDiagnostic}, then please file a feature
* request on D8/R8.
*/
-@Keep
+@KeepForApi
public class StringDiagnostic implements Diagnostic {
private final Origin origin;
diff --git a/src/main/java/com/android/tools/r8/utils/UnverifiableCfCodeDiagnostic.java b/src/main/java/com/android/tools/r8/utils/UnverifiableCfCodeDiagnostic.java
index 1724acc..866a15e 100644
--- a/src/main/java/com/android/tools/r8/utils/UnverifiableCfCodeDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/utils/UnverifiableCfCodeDiagnostic.java
@@ -4,12 +4,12 @@
package com.android.tools.r8.utils;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.MethodReference;
-@Keep
+@KeepForApi
public class UnverifiableCfCodeDiagnostic implements Diagnostic {
private final MethodReference methodReference;
diff --git a/src/main/java/com/android/tools/r8/utils/positions/NotSupportedMapVersionForMappingComposeDiagnostic.java b/src/main/java/com/android/tools/r8/utils/positions/NotSupportedMapVersionForMappingComposeDiagnostic.java
index 285046c..1e672a8 100644
--- a/src/main/java/com/android/tools/r8/utils/positions/NotSupportedMapVersionForMappingComposeDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/utils/positions/NotSupportedMapVersionForMappingComposeDiagnostic.java
@@ -5,11 +5,11 @@
package com.android.tools.r8.utils.positions;
import com.android.tools.r8.Diagnostic;
-import com.android.tools.r8.Keep;
+import com.android.tools.r8.keepanno.annotations.KeepForApi;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
-@Keep
+@KeepForApi
public class NotSupportedMapVersionForMappingComposeDiagnostic implements Diagnostic {
@Override
diff --git a/src/main/keep.txt b/src/main/keep.txt
index 3e23b48..ffd71aa 100644
--- a/src/main/keep.txt
+++ b/src/main/keep.txt
@@ -2,9 +2,6 @@
# 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.
-# TODO(b/204058761): Remove when we can use test proguard options.
--keep @com.android.tools.r8.Keep class * { public *; }
--keep @com.android.tools.r8.KeepForSubclassing class * { public *; protected *; }
-keepclasseswithmembers class * { @com.android.tools.r8.KeepMethodForCompileDump <methods>; }
# Keep all things that can be reached from the retrace api and keep the annotation
diff --git a/src/main/keep_retrace.txt b/src/main/keep_retrace.txt
index 6ddb273..4999d2e 100644
--- a/src/main/keep_retrace.txt
+++ b/src/main/keep_retrace.txt
@@ -17,7 +17,6 @@
-keep @com.android.tools.r8.KeepForRetraceApi class * { public *; }
-keep,allowshrinking @com.android.tools.r8.Keep class * { public *; }
--keep,allowshrinking @com.android.tools.r8.KeepForSubclassing class * { public *; protected *; }
-keep public class com.android.tools.r8.Version { public static final java.lang.String LABEL; }
-keep public class com.android.tools.r8.Version { public static java.lang.String getVersionString(); }