@@ -47,6 +47,8 @@ import java.util.stream.Stream
47
47
import kotlin.io.path.exists
48
48
49
49
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"
50
52
51
53
fun JvmCompilationTask.codeGenArgs (): CompilationArgs =
52
54
CompilationArgs ()
@@ -55,7 +57,7 @@ fun JvmCompilationTask.codeGenArgs(): CompilationArgs =
55
57
}.flag(" -d" , directories.classes)
56
58
.values(info.passthroughFlagsList)
57
59
58
- fun JvmCompilationTask.baseArgs (): CompilationArgs {
60
+ fun JvmCompilationTask.baseArgs (overrides : Map < String , String > = emptyMap() ): CompilationArgs {
59
61
val classpath =
60
62
when (info.reducedClasspathMode) {
61
63
" KOTLINBUILDER_REDUCED" -> {
@@ -83,8 +85,11 @@ fun JvmCompilationTask.baseArgs(): CompilationArgs {
83
85
it
84
86
.map(Path ::toString)
85
87
.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
+ )
88
93
.flag(" -jvm-target" , info.toolchainInfo.jvm.jvmTarget)
89
94
.flag(" -module-name" , info.moduleName)
90
95
}
@@ -293,7 +298,15 @@ private fun JvmCompilationTask.runKspPlugin(
293
298
compiler : KotlinToolchain .KotlincInvoker ,
294
299
): JvmCompilationTask {
295
300
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)
297
310
.plus(kspArgs(plugins))
298
311
.flag(" -d" , directories.generatedClasses)
299
312
.values(inputs.kotlinSourcesList)
@@ -316,6 +329,11 @@ private fun JvmCompilationTask.runKspPlugin(
316
329
}
317
330
}
318
331
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
+
319
337
/* *
320
338
* Produce the primary output jar.
321
339
*/
0 commit comments