Generate JvmTarget Gradle DSL object
This is generated based on JvmTarget compiler type without exposing compiler internals. ^KT-27301 In Progress
This commit is contained in:
@@ -34,6 +34,7 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.()
|
||||
|
||||
// specific Gradle types from internal compiler types
|
||||
generateKotlinVersion(apiSrcDir, withPrinterToFile)
|
||||
generateJvmTarget(apiSrcDir, withPrinterToFile)
|
||||
|
||||
// common interface
|
||||
val commonInterfaceFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions")
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.generators.arguments
|
||||
|
||||
import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
import java.io.File
|
||||
|
||||
internal fun generateJvmTarget(
|
||||
apiDir: File,
|
||||
filePrinter: (targetFile: File, Printer.() -> Unit) -> Unit
|
||||
) {
|
||||
val jvmTargetFqName = FqName("org.jetbrains.kotlin.gradle.dsl.JvmTarget")
|
||||
filePrinter(file(apiDir, jvmTargetFqName)) {
|
||||
generateDeclaration("enum class", jvmTargetFqName, afterType = "(val target: String)") {
|
||||
val jvmTargetValues = JvmTarget.values()
|
||||
val deprecatedJvmTargetValues = JvmTarget.values().subtract(JvmTarget.supportedValues().toSet())
|
||||
|
||||
val lastIndex = jvmTargetValues.size - 1
|
||||
jvmTargetValues.forEachIndexed { index, jvmTarget ->
|
||||
val lastChar = if (index == lastIndex) ";" else ","
|
||||
val prefix = if (jvmTarget in deprecatedJvmTargetValues) {
|
||||
"@Deprecated(\"Will be removed soon\") "
|
||||
} else {
|
||||
""
|
||||
}
|
||||
println("$prefix${jvmTarget.name}(\"${jvmTarget.description}\")$lastChar")
|
||||
}
|
||||
|
||||
println()
|
||||
println("companion object {")
|
||||
withIndent {
|
||||
println("fun fromTarget(target: String): JvmTarget =")
|
||||
println(" JvmTarget.values().firstOrNull { it.target == target }")
|
||||
println(" ?: throw IllegalArgumentException(\"Unknown Kotlin JVM target: ${'$'}target\")")
|
||||
}
|
||||
println("}")
|
||||
}
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
// DO NOT EDIT MANUALLY!
|
||||
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
enum class JvmTarget (val target: String) {
|
||||
@Deprecated("Will be removed soon") JVM_1_6("1.6"),
|
||||
JVM_1_8("1.8"),
|
||||
JVM_9("9"),
|
||||
JVM_10("10"),
|
||||
JVM_11("11"),
|
||||
JVM_12("12"),
|
||||
JVM_13("13"),
|
||||
JVM_14("14"),
|
||||
JVM_15("15"),
|
||||
JVM_16("16"),
|
||||
JVM_17("17"),
|
||||
JVM_18("18");
|
||||
|
||||
companion object {
|
||||
fun fromTarget(target: String): JvmTarget =
|
||||
JvmTarget.values().firstOrNull { it.target == target }
|
||||
?: throw IllegalArgumentException("Unknown Kotlin JVM target: $target")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user