[PowerAssert] Update Gradle extension to be more idiomatic

Instead of using raw List types in the Gradle extension, ListProperty
should be used instead to make it more Gradle idiomatic. Also marking
the extension and all properties as experimental to allow easier
changing in the future.

^KT-65952 Fixed
This commit is contained in:
Brian Norman
2024-03-07 10:51:06 -06:00
committed by Space Team
parent ae3e770246
commit 9a5f4522e6
3 changed files with 19 additions and 9 deletions
@@ -34,15 +34,14 @@ kotlin {
}
powerAssert {
functions = listOf(
"kotlin.assert",
functions.addAll(
"kotlin.test.assertTrue",
"kotlin.require",
"sample.AssertScope.assert",
"sample.assert",
"sample.dbg"
)
excludedSourceSets = listOf(
excludedSourceSets.addAll(
"commonMain",
"jvmMain",
"jsMain",
@@ -19,7 +19,16 @@
package org.jetbrains.kotlin.powerassert.gradle
open class PowerAssertGradleExtension {
var functions: List<String> = listOf("kotlin.assert")
var excludedSourceSets: List<String> = listOf()
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import javax.inject.Inject
@ExperimentalKotlinGradlePluginApi
abstract class PowerAssertGradleExtension @Inject constructor(
objectFactory: ObjectFactory,
) {
val functions: ListProperty<String> = objectFactory.listProperty(String::class.java).convention(listOf("kotlin.assert"))
val excludedSourceSets: ListProperty<String> = objectFactory.listProperty(String::class.java).convention(emptyList())
}
@@ -21,8 +21,10 @@ package org.jetbrains.kotlin.powerassert.gradle
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.plugin.*
@OptIn(ExperimentalKotlinGradlePluginApi::class)
class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
companion object {
private const val POWER_ASSERT_ARTIFACT_NAME = "kotlin-power-assert-compiler-plugin-embeddable"
@@ -37,7 +39,7 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean {
val project = kotlinCompilation.target.project
val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java)
return extension.excludedSourceSets.none { it == kotlinCompilation.defaultSourceSet.name }
return extension.excludedSourceSets.get().none { it == kotlinCompilation.defaultSourceSet.name }
}
override fun applyToCompilation(
@@ -45,8 +47,8 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
): Provider<List<SubpluginOption>> {
val project = kotlinCompilation.target.project
val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java)
return project.provider {
extension.functions.map {
return extension.functions.map { functions ->
functions.map {
SubpluginOption(key = FUNCTION_ARG_NAME, value = it)
}
}