From 5eebcf8c77619cf08a4c35ed175c20f9750a8a2e Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 30 Aug 2022 14:36:33 +0200 Subject: [PATCH] Generate Js runtime diagnostic mode type ^KT-27301 In Progress --- .../arguments/GenerateGradleOptions.kt | 1 + .../generators/arguments/jsTypesGenerators.kt | 30 +++++++++++++++++++ .../kotlin/gradle/dsl/JsDiagnosticMode.kt | 15 ++++++++++ 3 files changed, 46 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsDiagnosticMode.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt index 0f1dbb8b800..6ba03b5ea7b 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt @@ -38,6 +38,7 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.() generateJsMainFunctionExecutionMode(apiSrcDir, withPrinterToFile) generateJsModuleKind(apiSrcDir, withPrinterToFile) generateJsSourceMapEmbedMode(apiSrcDir, withPrinterToFile) + generateJsDiagnosticMode(apiSrcDir, withPrinterToFile) // common interface val commonInterfaceFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions") diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt index 3d33b91ceaa..ce956166dee 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt @@ -103,3 +103,33 @@ internal fun generateJsSourceMapEmbedMode( } } } + +internal fun generateJsDiagnosticMode( + apiDir: File, + filePrinter: (targetFile: File, Printer.() -> Unit) -> Unit +) { + val diagnosticModeFqName = FqName("org.jetbrains.kotlin.gradle.dsl.JsDiagnosticMode") + filePrinter(file(apiDir, diagnosticModeFqName)) { + generateDeclaration("enum class", diagnosticModeFqName, afterType = "(val mode: String)") { + val mods = 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") + } + + println() + println("companion object {") + withIndent { + println("fun fromMode(mode: String): JsDiagnosticMode =") + println(" JsDiagnosticMode.values().firstOrNull { it.mode == mode }") + println(" ?: throw IllegalArgumentException(\"Unknown JS diagnostic mode: ${'$'}mode\")") + } + println("}") + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsDiagnosticMode.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsDiagnosticMode.kt new file mode 100644 index 00000000000..729a509ab0e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsDiagnosticMode.kt @@ -0,0 +1,15 @@ +// DO NOT EDIT MANUALLY! +// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +package org.jetbrains.kotlin.gradle.dsl + +@Suppress("DEPRECATION") +enum class JsDiagnosticMode (val mode: String) { + RUNTIME_DIAGNOSTIC_EXCEPTION("exception"), + RUNTIME_DIAGNOSTIC_LOG("log"); + + companion object { + fun fromMode(mode: String): JsDiagnosticMode = + JsDiagnosticMode.values().firstOrNull { it.mode == mode } + ?: throw IllegalArgumentException("Unknown JS diagnostic mode: $mode") + } +}