Migrate from deprecated kotlinOptions to compilerOptions

pull/1036/head
Simon Marquis 1 year ago
parent 52bf138f51
commit 5799e37aa7

@ -20,11 +20,14 @@ import com.android.build.api.dsl.CommonExtension
import org.gradle.api.JavaVersion import org.gradle.api.JavaVersion
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.kotlin.dsl.assign
import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.provideDelegate import org.gradle.kotlin.dsl.provideDelegate
import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
/** /**
* Configure base Kotlin with Android options * Configure base Kotlin with Android options
@ -48,7 +51,7 @@ internal fun Project.configureKotlinAndroid(
} }
} }
configureKotlin() configureKotlin<KotlinAndroidProjectExtension>()
dependencies { dependencies {
add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get()) add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get())
@ -66,26 +69,26 @@ internal fun Project.configureKotlinJvm() {
targetCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11
} }
configureKotlin() configureKotlin<KotlinJvmProjectExtension>()
} }
/** /**
* Configure base Kotlin options * Configure base Kotlin options
*/ */
private fun Project.configureKotlin() { private inline fun <reified T : KotlinTopLevelExtension> Project.configureKotlin() = configure<T> {
// Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947 // Treat all Kotlin warnings as errors (disabled by default)
tasks.withType<KotlinCompile>().configureEach { // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties
kotlinOptions { val warningsAsErrors: String? by project
// Set JVM target to 11 when (this) {
jvmTarget = JavaVersion.VERSION_11.toString() is KotlinAndroidProjectExtension -> compilerOptions
// Treat all Kotlin warnings as errors (disabled by default) is KotlinJvmProjectExtension -> compilerOptions
// Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties else -> TODO("Unsupported project extension $this ${T::class}")
val warningsAsErrors: String? by project }.apply {
allWarningsAsErrors = warningsAsErrors.toBoolean() jvmTarget = JvmTarget.JVM_11
freeCompilerArgs = freeCompilerArgs + listOf( allWarningsAsErrors = warningsAsErrors.toBoolean()
// Enable experimental coroutines APIs, including Flow freeCompilerArgs.add(
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", // Enable experimental coroutines APIs, including Flow
) "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
} )
} }
} }

Loading…
Cancel
Save