From 7ca99770092b80626cd3ef71c1ad4203b523b237 Mon Sep 17 00:00:00 2001 From: Daniel Santiago Date: Thu, 9 Jan 2025 07:19:43 -0800 Subject: [PATCH] Add binary compatibility validator to the Gradle projects The validator (https://github.com/Kotlin/binary-compatibility-validator) will help us track public API changes and validate that the conversion from Java to Kotlin does not cause any breakage. API validation is part of the Gradle build process and will fail the build if API changes are done but not reflected in the API file. To update the API file execute `./gradlew apiDump` and commit the .api file for review along with the code changes. RELNOTES=N/A PiperOrigin-RevId: 713662828 --- gradle-projects/dagger-runtime/api/dagger.api | 282 ++++++++++++++++++ .../dagger-runtime/build.gradle.kts | 1 + gradle/libs.versions.toml | 1 + 3 files changed, 284 insertions(+) create mode 100644 gradle-projects/dagger-runtime/api/dagger.api diff --git a/gradle-projects/dagger-runtime/api/dagger.api b/gradle-projects/dagger-runtime/api/dagger.api new file mode 100644 index 00000000000..36ed2a3cc10 --- /dev/null +++ b/gradle-projects/dagger-runtime/api/dagger.api @@ -0,0 +1,282 @@ +public abstract interface annotation class dagger/Binds : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/BindsInstance : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/BindsOptionalOf : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/Component : java/lang/annotation/Annotation { + public abstract fun dependencies ()[Ljava/lang/Class; + public abstract fun modules ()[Ljava/lang/Class; +} + +public abstract interface annotation class dagger/Component$Builder : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/Component$Factory : java/lang/annotation/Annotation { +} + +public abstract interface class dagger/Lazy { + public abstract fun get ()Ljava/lang/Object; +} + +public abstract interface annotation class dagger/MapKey : java/lang/annotation/Annotation { + public abstract fun unwrapValue ()Z +} + +public abstract interface class dagger/MembersInjector { + public abstract fun injectMembers (Ljava/lang/Object;)V +} + +public abstract interface annotation class dagger/Module : java/lang/annotation/Annotation { + public abstract fun includes ()[Ljava/lang/Class; + public abstract fun subcomponents ()[Ljava/lang/Class; +} + +public abstract interface annotation class dagger/Provides : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/Reusable : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/Subcomponent : java/lang/annotation/Annotation { + public abstract fun modules ()[Ljava/lang/Class; +} + +public abstract interface annotation class dagger/Subcomponent$Builder : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/Subcomponent$Factory : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/assisted/Assisted : java/lang/annotation/Annotation { + public abstract fun value ()Ljava/lang/String; +} + +public abstract interface annotation class dagger/assisted/AssistedFactory : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/assisted/AssistedInject : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/internal/Beta : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/internal/ComponentDefinitionType : java/lang/annotation/Annotation { + public abstract fun value ()Ljava/lang/Class; +} + +public final class dagger/internal/DaggerCollections { + public static fun hasDuplicates (Ljava/util/List;)Z + public static fun newLinkedHashMapWithExpectedSize (I)Ljava/util/LinkedHashMap; + public static fun presizedList (I)Ljava/util/List; +} + +public abstract interface annotation class dagger/internal/DaggerGenerated : java/lang/annotation/Annotation { +} + +public final class dagger/internal/DelegateFactory : dagger/internal/Factory { + public fun ()V + public fun get ()Ljava/lang/Object; + public static fun setDelegate (Ldagger/internal/Provider;Ldagger/internal/Provider;)V + public static fun setDelegate (Ljavax/inject/Provider;Ljavax/inject/Provider;)V + public fun setDelegatedProvider (Ldagger/internal/Provider;)V + public fun setDelegatedProvider (Ljavax/inject/Provider;)V +} + +public final class dagger/internal/DoubleCheck : dagger/Lazy, dagger/internal/Provider { + public fun get ()Ljava/lang/Object; + public static fun lazy (Ldagger/internal/Provider;)Ldagger/Lazy; + public static fun lazy (Ljavax/inject/Provider;)Ldagger/Lazy; + public static fun provider (Ldagger/internal/Provider;)Ldagger/internal/Provider; + public static fun provider (Ljavax/inject/Provider;)Ljavax/inject/Provider; +} + +public abstract interface class dagger/internal/Factory : dagger/internal/Provider { +} + +public abstract interface annotation class dagger/internal/GwtIncompatible : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/internal/IdentifierNameString : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/internal/InjectedFieldSignature : java/lang/annotation/Annotation { + public abstract fun value ()Ljava/lang/String; +} + +public final class dagger/internal/InstanceFactory : dagger/Lazy, dagger/internal/Factory { + public static fun create (Ljava/lang/Object;)Ldagger/internal/Factory; + public static fun createNullable (Ljava/lang/Object;)Ldagger/internal/Factory; + public fun get ()Ljava/lang/Object; +} + +public abstract interface annotation class dagger/internal/KeepFieldType : java/lang/annotation/Annotation { +} + +public final class dagger/internal/LazyClassKeyMap : java/util/Map { + public fun clear ()V + public fun containsKey (Ljava/lang/Object;)Z + public fun containsValue (Ljava/lang/Object;)Z + public fun entrySet ()Ljava/util/Set; + public fun get (Ljava/lang/Object;)Ljava/lang/Object; + public fun isEmpty ()Z + public fun keySet ()Ljava/util/Set; + public static fun of (Ljava/util/Map;)Ljava/util/Map; + public fun put (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object; + public synthetic fun put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + public fun putAll (Ljava/util/Map;)V + public fun remove (Ljava/lang/Object;)Ljava/lang/Object; + public fun size ()I + public fun values ()Ljava/util/Collection; +} + +public class dagger/internal/LazyClassKeyMap$MapFactory : dagger/internal/Factory { + public synthetic fun get ()Ljava/lang/Object; + public fun get ()Ljava/util/Map; + public static fun of (Ldagger/internal/Factory;)Ldagger/internal/LazyClassKeyMap$MapFactory; +} + +public class dagger/internal/LazyClassKeyMap$MapProviderFactory : dagger/internal/Factory { + public synthetic fun get ()Ljava/lang/Object; + public fun get ()Ljava/util/Map; + public static fun of (Ldagger/internal/Factory;)Ldagger/internal/LazyClassKeyMap$MapProviderFactory; +} + +public final class dagger/internal/MapBuilder { + public fun build ()Ljava/util/Map; + public static fun newMapBuilder (I)Ldagger/internal/MapBuilder; + public fun put (Ljava/lang/Object;Ljava/lang/Object;)Ldagger/internal/MapBuilder; + public fun putAll (Ljava/util/Map;)Ldagger/internal/MapBuilder; +} + +public final class dagger/internal/MapFactory { + public static fun builder (I)Ldagger/internal/MapFactory$Builder; + public static fun emptyMapProvider ()Ldagger/internal/Provider; + public synthetic fun get ()Ljava/lang/Object; + public fun get ()Ljava/util/Map; +} + +public final class dagger/internal/MapFactory$Builder { + public fun build ()Ldagger/internal/MapFactory; + public synthetic fun put (Ljava/lang/Object;Ldagger/internal/Provider;)Ldagger/internal/AbstractMapFactory$Builder; + public fun put (Ljava/lang/Object;Ldagger/internal/Provider;)Ldagger/internal/MapFactory$Builder; + public fun put (Ljava/lang/Object;Ljavax/inject/Provider;)Ldagger/internal/MapFactory$Builder; + public synthetic fun putAll (Ldagger/internal/Provider;)Ldagger/internal/AbstractMapFactory$Builder; + public fun putAll (Ldagger/internal/Provider;)Ldagger/internal/MapFactory$Builder; + public fun putAll (Ljavax/inject/Provider;)Ldagger/internal/MapFactory$Builder; +} + +public final class dagger/internal/MapProviderFactory : dagger/Lazy { + public static fun builder (I)Ldagger/internal/MapProviderFactory$Builder; + public synthetic fun get ()Ljava/lang/Object; + public fun get ()Ljava/util/Map; +} + +public final class dagger/internal/MapProviderFactory$Builder { + public fun build ()Ldagger/internal/MapProviderFactory; + public synthetic fun put (Ljava/lang/Object;Ldagger/internal/Provider;)Ldagger/internal/AbstractMapFactory$Builder; + public fun put (Ljava/lang/Object;Ldagger/internal/Provider;)Ldagger/internal/MapProviderFactory$Builder; + public fun put (Ljava/lang/Object;Ljavax/inject/Provider;)Ldagger/internal/MapProviderFactory$Builder; + public synthetic fun putAll (Ldagger/internal/Provider;)Ldagger/internal/AbstractMapFactory$Builder; + public fun putAll (Ldagger/internal/Provider;)Ldagger/internal/MapProviderFactory$Builder; + public fun putAll (Ljavax/inject/Provider;)Ldagger/internal/MapProviderFactory$Builder; +} + +public final class dagger/internal/MembersInjectors { + public static fun noOp ()Ldagger/MembersInjector; +} + +public final class dagger/internal/Preconditions { + public static fun checkBuilderRequirement (Ljava/lang/Object;Ljava/lang/Class;)V + public static fun checkNotNull (Ljava/lang/Object;)Ljava/lang/Object; + public static fun checkNotNull (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; + public static fun checkNotNull (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; + public static fun checkNotNullFromComponent (Ljava/lang/Object;)Ljava/lang/Object; + public static fun checkNotNullFromProvides (Ljava/lang/Object;)Ljava/lang/Object; +} + +public abstract interface class dagger/internal/Provider : jakarta/inject/Provider, javax/inject/Provider { +} + +public final class dagger/internal/ProviderOfLazy : dagger/internal/Provider { + public static fun create (Ldagger/internal/Provider;)Ldagger/internal/Provider; + public static fun create (Ljavax/inject/Provider;)Ldagger/internal/Provider; + public fun get ()Ldagger/Lazy; + public synthetic fun get ()Ljava/lang/Object; +} + +public final class dagger/internal/Providers { + public static fun asDaggerProvider (Ljavax/inject/Provider;)Ldagger/internal/Provider; +} + +public abstract interface annotation class dagger/internal/QualifierMetadata : java/lang/annotation/Annotation { + public abstract fun value ()[Ljava/lang/String; +} + +public abstract interface annotation class dagger/internal/ScopeMetadata : java/lang/annotation/Annotation { + public abstract fun value ()Ljava/lang/String; +} + +public final class dagger/internal/SetBuilder { + public fun add (Ljava/lang/Object;)Ldagger/internal/SetBuilder; + public fun addAll (Ljava/util/Collection;)Ldagger/internal/SetBuilder; + public fun build ()Ljava/util/Set; + public static fun newSetBuilder (I)Ldagger/internal/SetBuilder; +} + +public final class dagger/internal/SetFactory : dagger/internal/Factory { + public static fun builder (II)Ldagger/internal/SetFactory$Builder; + public static fun empty ()Ldagger/internal/Factory; + public synthetic fun get ()Ljava/lang/Object; + public fun get ()Ljava/util/Set; +} + +public final class dagger/internal/SetFactory$Builder { + public fun addCollectionProvider (Ldagger/internal/Provider;)Ldagger/internal/SetFactory$Builder; + public fun addCollectionProvider (Ljavax/inject/Provider;)Ldagger/internal/SetFactory$Builder; + public fun addProvider (Ldagger/internal/Provider;)Ldagger/internal/SetFactory$Builder; + public fun addProvider (Ljavax/inject/Provider;)Ldagger/internal/SetFactory$Builder; + public fun build ()Ldagger/internal/SetFactory; +} + +public final class dagger/internal/SingleCheck : dagger/internal/Provider { + public fun get ()Ljava/lang/Object; + public static fun provider (Ldagger/internal/Provider;)Ldagger/internal/Provider; + public static fun provider (Ljavax/inject/Provider;)Ljavax/inject/Provider; +} + +public abstract interface annotation class dagger/multibindings/ClassKey : java/lang/annotation/Annotation { + public abstract fun value ()Ljava/lang/Class; +} + +public abstract interface annotation class dagger/multibindings/ElementsIntoSet : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/multibindings/IntKey : java/lang/annotation/Annotation { + public abstract fun value ()I +} + +public abstract interface annotation class dagger/multibindings/IntoMap : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/multibindings/IntoSet : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/multibindings/LazyClassKey : java/lang/annotation/Annotation { + public abstract fun value ()Ljava/lang/Class; +} + +public abstract interface annotation class dagger/multibindings/LongKey : java/lang/annotation/Annotation { + public abstract fun value ()J +} + +public abstract interface annotation class dagger/multibindings/Multibinds : java/lang/annotation/Annotation { +} + +public abstract interface annotation class dagger/multibindings/StringKey : java/lang/annotation/Annotation { + public abstract fun value ()Ljava/lang/String; +} + diff --git a/gradle-projects/dagger-runtime/build.gradle.kts b/gradle-projects/dagger-runtime/build.gradle.kts index 8e4941dfd71..fa1bf61c929 100644 --- a/gradle-projects/dagger-runtime/build.gradle.kts +++ b/gradle-projects/dagger-runtime/build.gradle.kts @@ -3,6 +3,7 @@ import dagger.gradle.build.daggerSources plugins { alias(libs.plugins.dagger.kotlinJvm) alias(libs.plugins.dagger.publish) + alias(libs.plugins.binaryCompatibilityValidator) } daggerSources { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c48b116e874..57cd6a02e6f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,6 +20,7 @@ publishPlugin = { module = "com.vanniktech:gradle-maven-publish-plugin", version truth = { module = "com.google.truth:truth", version.ref = "truth" } [plugins] +binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.17.0" } dagger-kotlinJvm = { id = "dagger.gradle.build.jvm" } dagger-publish = { id = "dagger.gradle.build.publish" } kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }