• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 import org.jetbrains.kotlin.gradle.tasks.*
2 
<lambda>null3 configure(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