1 import org.jetbrains.kotlin.gradle.tasks.* 2 <lambda>null3configure(subprojects) { 4 val project = this 5 if (name in sourceless) return@configure 6 apply(plugin = "atomicfu-conventions") 7 tasks.withType<KotlinCompilationTask<*>>().configureEach { 8 val isMainTaskName = name.startsWith("compileKotlin") 9 compilerOptions { 10 var versionsAreNotOverridden = true 11 getOverriddenKotlinLanguageVersion(project)?.let { 12 languageVersion = it 13 versionsAreNotOverridden = false 14 } 15 getOverriddenKotlinApiVersion(project)?.let { 16 apiVersion = it 17 versionsAreNotOverridden = false 18 } 19 if (isMainTaskName && versionsAreNotOverridden && !unpublished.contains(project.name)) { 20 allWarningsAsErrors = true 21 freeCompilerArgs.add("-Xexplicit-api=strict") 22 } 23 /* Coroutines do not interop with Java and these flags provide a significant 24 * (i.e. close to double-digit) reduction in both bytecode and optimized dex size */ 25 if (this@configureEach is KotlinJvmCompile) { 26 freeCompilerArgs.addAll( 27 "-Xno-param-assertions", 28 "-Xno-call-assertions", 29 "-Xno-receiver-assertions" 30 ) 31 } 32 if (this@configureEach is KotlinNativeCompile) { 33 optIn.addAll( 34 "kotlinx.cinterop.ExperimentalForeignApi", 35 "kotlinx.cinterop.UnsafeNumber", 36 "kotlin.experimental.ExperimentalNativeApi", 37 ) 38 } 39 } 40 41 } 42 } 43