Skip to content

Commit f3ac6ac

Browse files
committed
Allow for overriding of the KSP Kotlin toolchain versions for K2
1 parent b30520a commit f3ac6ac

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ import java.util.stream.Stream
4747
import kotlin.io.path.exists
4848

4949
private const val SOURCE_JARS_DIR = "_srcjars"
50+
private const val API_VERSION_ARG = "-api-version"
51+
private const val LANGUAGE_VERSION_ARG = "-language-version"
5052

5153
fun JvmCompilationTask.codeGenArgs(): CompilationArgs =
5254
CompilationArgs()
@@ -55,7 +57,7 @@ fun JvmCompilationTask.codeGenArgs(): CompilationArgs =
5557
}.flag("-d", directories.classes)
5658
.values(info.passthroughFlagsList)
5759

58-
fun JvmCompilationTask.baseArgs(): CompilationArgs {
60+
fun JvmCompilationTask.baseArgs(overrides: Map<String, String> = emptyMap()): CompilationArgs {
5961
val classpath =
6062
when (info.reducedClasspathMode) {
6163
"KOTLINBUILDER_REDUCED" -> {
@@ -83,8 +85,11 @@ fun JvmCompilationTask.baseArgs(): CompilationArgs {
8385
it
8486
.map(Path::toString)
8587
.joinToString(File.pathSeparator)
86-
}.flag("-api-version", info.toolchainInfo.common.apiVersion)
87-
.flag("-language-version", info.toolchainInfo.common.languageVersion)
88+
}.flag(API_VERSION_ARG, overrides[API_VERSION_ARG] ?: info.toolchainInfo.common.apiVersion)
89+
.flag(
90+
LANGUAGE_VERSION_ARG,
91+
overrides[LANGUAGE_VERSION_ARG] ?: info.toolchainInfo.common.languageVersion,
92+
)
8893
.flag("-jvm-target", info.toolchainInfo.jvm.jvmTarget)
8994
.flag("-module-name", info.moduleName)
9095
}
@@ -293,7 +298,15 @@ private fun JvmCompilationTask.runKspPlugin(
293298
compiler: KotlinToolchain.KotlincInvoker,
294299
): JvmCompilationTask {
295300
return context.execute("Ksp (${inputs.processorsList.joinToString(", ")})") {
296-
baseArgs()
301+
val overrides =
302+
mutableMapOf(
303+
API_VERSION_ARG to kspKotlinToolchainVersion(info.toolchainInfo.common.apiVersion),
304+
LANGUAGE_VERSION_ARG to
305+
kspKotlinToolchainVersion(
306+
info.toolchainInfo.common.languageVersion,
307+
),
308+
)
309+
baseArgs(overrides)
297310
.plus(kspArgs(plugins))
298311
.flag("-d", directories.generatedClasses)
299312
.values(inputs.kotlinSourcesList)
@@ -316,6 +329,11 @@ private fun JvmCompilationTask.runKspPlugin(
316329
}
317330
}
318331

332+
private fun kspKotlinToolchainVersion(version: String): String {
333+
// KSP doesn't support Kotlin 2.0 yet, so we need to use 1.9
334+
return if (version.toFloat() >= 2.0) "1.9" else version
335+
}
336+
319337
/**
320338
* Produce the primary output jar.
321339
*/

0 commit comments

Comments
 (0)