Skip to content

Commit 3b188c2

Browse files
committed
Fix AGP type InternalBaseVariant from leaking in the Anvil plugin, drop AGP 7.2.0 from CI test runs
1 parent 5c3970e commit 3b188c2

3 files changed

Lines changed: 18 additions & 13 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ jobs:
173173
fail-fast: false
174174
matrix:
175175
kotlin-version: [ 2.2.20 ]
176-
agp-version: [ 7.2.0, 7.3.1 ]
176+
agp-version: [ 7.3.1 ]
177177

178178
steps:
179179
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

gradle-plugin/src/gradleTest/java/com/squareup/anvil/plugin/IncrementalTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ class IncrementalTest : BaseGradleTest() {
753753

754754
// now we have constructor parameters
755755
rootAnvilMainGenerated.injectClassFactory shouldExistWithTextContaining """
756-
public class InjectClass_Factory(
756+
public class InjectClass_Factory private constructor(
757757
private val name: Provider<String>,
758758
) : Factory<InjectClass>
759759
""".trimIndent()
@@ -1338,7 +1338,7 @@ class IncrementalTest : BaseGradleTest() {
13381338
.resolve("com/squareup/test/lib/AssistedClass_Factory_Impl.kt")
13391339

13401340
assistedClassFactoryImpl shouldExistWithTextContaining """
1341-
public class AssistedClass_Factory_Impl(
1341+
public class AssistedClass_Factory_Impl private constructor(
13421342
private val delegateFactory: AssistedClass_Factory,
13431343
) : AssistedClass.Factory {
13441344
override fun create(arg1: String): AssistedClass = delegateFactory.get(arg1)
@@ -1357,7 +1357,7 @@ class IncrementalTest : BaseGradleTest() {
13571357
}
13581358

13591359
assistedClassFactoryImpl shouldExistWithTextContaining """
1360-
public class AssistedClass_Factory_Impl(
1360+
public class AssistedClass_Factory_Impl private constructor(
13611361
private val delegateFactory: AssistedClass_Factory,
13621362
) : AssistedClass.Factory {
13631363
override fun create(arg1: String, arg2: String): AssistedClass = delegateFactory.get(arg1, arg2)

gradle-plugin/src/main/java/com/squareup/anvil/plugin/AnvilPlugin.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.android.build.gradle.BaseExtension
88
import com.android.build.gradle.LibraryExtension
99
import com.android.build.gradle.TestExtension
1010
import com.android.build.gradle.TestedExtension
11+
import com.android.build.gradle.internal.core.InternalBaseVariant
1112
import org.gradle.api.Action
1213
import org.gradle.api.GradleException
1314
import org.gradle.api.Project
@@ -85,7 +86,7 @@ internal open class AnvilPlugin : KotlinCompilerPluginSupportPlugin {
8586
}
8687
}
8788

88-
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
89+
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION", "ObjectLiteralToLambda")
8990
private fun extendAndroidConfigurations(
9091
target: Project,
9192
commonConfiguration: Configuration,
@@ -131,14 +132,18 @@ internal open class AnvilPlugin : KotlinCompilerPluginSupportPlugin {
131132
// Essentially, an `Action<BaseVariant>` is okay but `(BaseVariant) -> Unit` is not.
132133
// If any types from AGP are in a signature,
133134
// then `AnvilPlugin` can only be applied to projects with AGP in their build classpath.
134-
variants.configureEach { variant ->
135-
val configuration = getConfiguration(target, buildType = variant.name)
136-
when (variant) {
137-
is UnitTestVariantDeprecated -> configuration.extendsFrom(testConfiguration)
138-
is TestVariantDeprecated -> configuration.extendsFrom(androidTestVariant)
139-
else -> configuration.extendsFrom(commonConfiguration)
140-
}
141-
}
135+
variants.configureEach(
136+
object : Action<InternalBaseVariant> {
137+
override fun execute(variant: InternalBaseVariant) {
138+
val configuration = getConfiguration(target, buildType = variant.name)
139+
when (variant) {
140+
is UnitTestVariantDeprecated -> configuration.extendsFrom(testConfiguration)
141+
is TestVariantDeprecated -> configuration.extendsFrom(androidTestVariant)
142+
else -> configuration.extendsFrom(commonConfiguration)
143+
}
144+
}
145+
},
146+
)
142147
}
143148
}
144149
}

0 commit comments

Comments
 (0)