Minor, generate trailing comma in enums in Gradle compiler types

This both simplifies the generator code and makes the generated code
conform to the style guide (see
https://kotlinlang.org/docs/coding-conventions.html#trailing-commas), in
particular it improves version control diffs for generated enums.
This commit is contained in:
Alexander Udalov
2022-09-22 00:50:06 +02:00
parent 3ee09f05ef
commit 8757988037
9 changed files with 32 additions and 36 deletions
@@ -22,11 +22,10 @@ internal fun generateJsMainFunctionExecutionMode(
K2JsArgumentConstants::NO_CALL.name to K2JsArgumentConstants.NO_CALL
)
val lastIndex = modes.size - 1
modes.entries.forEachIndexed { index, mode ->
val lastChar = if (index == lastIndex) ";" else ","
println("${mode.key}(\"${mode.value}\")$lastChar")
for ((key, value) in modes) {
println("$key(\"$value\"),")
}
println(";")
println()
println("companion object {")
@@ -55,11 +54,10 @@ internal fun generateJsModuleKind(
K2JsArgumentConstants::MODULE_ES.name to K2JsArgumentConstants.MODULE_ES
)
val lastIndex = kinds.size - 1
kinds.entries.forEachIndexed { index, mode ->
val lastChar = if (index == lastIndex) ";" else ","
println("${mode.key}(\"${mode.value}\")$lastChar")
for ((key, value) in kinds) {
println("$key(\"$value\"),")
}
println(";")
println()
println("companion object {")
@@ -86,11 +84,10 @@ internal fun generateJsSourceMapEmbedMode(
K2JsArgumentConstants::SOURCE_MAP_SOURCE_CONTENT_INLINING.name to K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_INLINING,
)
val lastIndex = modes.size - 1
modes.entries.forEachIndexed { index, mode ->
val lastChar = if (index == lastIndex) ";" else ","
println("${mode.key}(\"${mode.value}\")$lastChar")
for ((key, value) in modes) {
println("$key(\"$value\"),")
}
println(";")
println()
println("companion object {")
@@ -111,16 +108,15 @@ internal fun generateJsDiagnosticMode(
val diagnosticModeFqName = FqName("org.jetbrains.kotlin.gradle.dsl.JsDiagnosticMode")
filePrinter(fileFromFqName(apiDir, diagnosticModeFqName)) {
generateDeclaration("enum class", diagnosticModeFqName, afterType = "(val mode: String)") {
val mods = hashMapOf(
val modes = hashMapOf(
K2JsArgumentConstants::RUNTIME_DIAGNOSTIC_EXCEPTION.name to K2JsArgumentConstants.RUNTIME_DIAGNOSTIC_EXCEPTION,
K2JsArgumentConstants::RUNTIME_DIAGNOSTIC_LOG.name to K2JsArgumentConstants.RUNTIME_DIAGNOSTIC_LOG,
)
val lastIndex = mods.size - 1
mods.entries.forEachIndexed { index, mode ->
val lastChar = if (index == lastIndex) ";" else ","
println("${mode.key}(\"${mode.value}\")$lastChar")
for ((key, value) in modes) {
println("$key(\"$value\"),")
}
println(";")
println()
println("companion object {")
@@ -17,13 +17,10 @@ internal fun generateJvmTarget(
val jvmTargetFqName = FqName("org.jetbrains.kotlin.gradle.dsl.JvmTarget")
filePrinter(fileFromFqName(apiDir, jvmTargetFqName)) {
generateDeclaration("enum class", jvmTargetFqName, afterType = "(val target: String)") {
val jvmTargetValues = JvmTarget.supportedValues()
val lastIndex = jvmTargetValues.size - 1
jvmTargetValues.forEachIndexed { index, jvmTarget ->
val lastChar = if (index == lastIndex) ";" else ","
println("${jvmTarget.name}(\"${jvmTarget.description}\")$lastChar")
for (jvmTarget in JvmTarget.supportedValues()) {
println("${jvmTarget.name}(\"${jvmTarget.description}\"),")
}
println(";")
println()
println("companion object {")
@@ -35,4 +32,4 @@ internal fun generateJvmTarget(
println("}")
}
}
}
}
@@ -21,19 +21,16 @@ internal fun generateKotlinVersion(
val kotlinVersionFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinVersion")
filePrinter(fileFromFqName(apiDir, kotlinVersionFqName)) {
generateDeclaration("enum class", kotlinVersionFqName, afterType = "(val version: String)") {
val languageVersions = LanguageVersion.values()
val lastIndex = languageVersions.size - 1
languageVersions.forEachIndexed { index, languageVersion ->
val lastChar = if (index == lastIndex) ";" else ","
for (languageVersion in LanguageVersion.values()) {
val prefix = when {
languageVersion.isUnsupported -> "@Deprecated(\"Unsupported\", level = DeprecationLevel.ERROR) "
languageVersion.isDeprecated -> "@Deprecated(\"Will be removed soon\") "
else -> ""
}
println("${prefix}KOTLIN_${languageVersion.major}_${languageVersion.minor}(\"${languageVersion.versionString}\")$lastChar")
println("${prefix}KOTLIN_${languageVersion.major}_${languageVersion.minor}(\"${languageVersion.versionString}\"),")
}
println(";")
println()
println("companion object {")
@@ -7,7 +7,8 @@ package org.jetbrains.kotlin.gradle.dsl
enum class JsDiagnosticMode(val mode: String) {
RUNTIME_DIAGNOSTIC_EXCEPTION("exception"),
RUNTIME_DIAGNOSTIC_LOG("log");
RUNTIME_DIAGNOSTIC_LOG("log"),
;
companion object {
fun fromMode(mode: String): JsDiagnosticMode =
@@ -7,7 +7,8 @@ package org.jetbrains.kotlin.gradle.dsl
enum class JsMainFunctionExecutionMode(val mode: String) {
CALL("call"),
NO_CALL("noCall");
NO_CALL("noCall"),
;
companion object {
fun fromMode(mode: String): JsMainFunctionExecutionMode =
@@ -10,7 +10,8 @@ enum class JsModuleKind(val kind: String) {
MODULE_PLAIN("plain"),
MODULE_ES("es"),
MODULE_COMMONJS("commonjs"),
MODULE_UMD("umd");
MODULE_UMD("umd"),
;
companion object {
fun fromKind(kind: String): JsModuleKind =
@@ -8,7 +8,8 @@ package org.jetbrains.kotlin.gradle.dsl
enum class JsSourceMapEmbedMode(val mode: String) {
SOURCE_MAP_SOURCE_CONTENT_INLINING("inlining"),
SOURCE_MAP_SOURCE_CONTENT_NEVER("never"),
SOURCE_MAP_SOURCE_CONTENT_ALWAYS("always");
SOURCE_MAP_SOURCE_CONTENT_ALWAYS("always"),
;
companion object {
fun fromMode(mode: String): JsSourceMapEmbedMode =
@@ -16,7 +16,8 @@ enum class JvmTarget(val target: String) {
JVM_15("15"),
JVM_16("16"),
JVM_17("17"),
JVM_18("18");
JVM_18("18"),
;
companion object {
fun fromTarget(target: String): JvmTarget =
@@ -15,7 +15,8 @@ enum class KotlinVersion(val version: String) {
KOTLIN_1_6("1.6"),
KOTLIN_1_7("1.7"),
KOTLIN_1_8("1.8"),
KOTLIN_1_9("1.9");
KOTLIN_1_9("1.9"),
;
companion object {
fun fromVersion(version: String): KotlinVersion =