diff --git a/libraries/tools/new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties b/libraries/tools/new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties index 49526367c0f..7e1a077a35a 100644 --- a/libraries/tools/new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties +++ b/libraries/tools/new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties @@ -96,6 +96,7 @@ module.configurator.js.node=Node.js module.configurator.js.css=CSS Support module.configurator.js.target.settings.kind=Target kind +module.configurator.js.target.settings.compiler=JS Compiler module.configurator.js.target.settings.kind.library=Library module.configurator.js.target.settings.kind.application=Application diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt index 7d100ec9f1b..de3dfa34786 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt @@ -42,10 +42,13 @@ interface JSConfigurator : ModuleConfiguratorWithModuleType, ModuleConfiguratorW modulePath: Path ): TaskResult = GradlePlugin.gradleProperties - .addValues("kotlin.js.generate.executable.default" to "false") + .addValues( + "kotlin.js.generate.executable.default" to "false", + "kotlin.js.compiler" to settingsValue(module, compiler).text.toLowerCase() + ) override fun getConfiguratorSettings(): List> = - super.getConfiguratorSettings() + kind + super.getConfiguratorSettings() + kind + compiler companion object : ModuleConfiguratorSettings() { val kind by enumSetting( @@ -65,6 +68,22 @@ interface JSConfigurator : ModuleConfiguratorWithModuleType, ModuleConfiguratorW } } + val compiler by enumSetting( + KotlinNewProjectWizardBundle.message("module.configurator.js.target.settings.compiler"), + GenerationPhase.PROJECT_GENERATION + ) { + defaultValue = value(JsCompiler.IR) + filter = filter@{ reference, compilerCandidate -> + when { + reference !is ModuleConfiguratorSettingReference<*, *> -> false + reference.module?.let { settingValue(it, kind) } == JsTargetKind.LIBRARY -> true + reference.module?.let { settingValue(it, kind) } == JsTargetKind.APPLICATION + && compilerCandidate == JsCompiler.BOTH -> false + else -> true + } + } + } + fun Reader.isApplication(module: Module): Boolean = settingsValue(module, kind) == JsTargetKind.APPLICATION } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt index f8cc14fc72b..cd397328277 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt @@ -79,6 +79,12 @@ enum class JsTargetKind(override val text: String) : DisplayableSettingItem { APPLICATION(KotlinNewProjectWizardBundle.message("module.configurator.js.target.settings.kind.application")) } +enum class JsCompiler(override val text: String) : DisplayableSettingItem { + IR("IR"), + LEGACY("LEGACY"), + BOTH("BOTH") +} + object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWithTests { override fun getConfiguratorSettings(): List> = super.getConfiguratorSettings() +