From 13bf15b403ade32e8efbe2db33c59177dc2d5995 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 26 Aug 2020 14:15:51 +0300 Subject: [PATCH] [JS, Wizard] Set js compiler per module ^KT-41418 fixed --- .../ir/buildsystem/gradle/multiplatform/ir.kt | 29 ++++++++++++++++--- .../JsModuleConfigurator.kt | 12 ++++---- .../moduleConfigurators/TargetConfigurator.kt | 25 +++++++++------- .../projectTemplates/ProjectTemplate.kt | 6 ++-- 4 files changed, 49 insertions(+), 23 deletions(-) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/multiplatform/ir.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/multiplatform/ir.kt index 8f041452d2e..15fdbefb2a4 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/multiplatform/ir.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/multiplatform/ir.kt @@ -19,12 +19,23 @@ interface TargetIR : MultiplatformIR data class TargetAccessIR( val type: ModuleSubType, - val nonDefaultName: String? // `null` stands for default target name + val nonDefaultName: String?, // `null` stands for default target name + val additionalParams: List = listOf() ) : TargetIR { override fun GradlePrinter.renderGradle() { +type.toString() par { - nonDefaultName?.let { +it.quotified } + nonDefaultName?.let { + +it.quotified + if (additionalParams.isNotEmpty()) +", " + } + if (additionalParams.isNotEmpty()) { + additionalParams + .joinToString { + it.toString() + } + .apply { +this } + } } } } @@ -56,8 +67,18 @@ data class DefaultTargetConfigurationIR( override fun GradlePrinter.renderGradle() { +targetAccess.type.toString() - if (irs.isEmpty() || targetAccess.nonDefaultName != null) par { - targetAccess.nonDefaultName?.let { +it.quotified } + if (irs.isEmpty() || targetAccess.nonDefaultName != null || targetAccess.additionalParams.isNotEmpty()) par { + targetAccess.nonDefaultName?.let { + +it.quotified + if (targetAccess.additionalParams.isNotEmpty()) +", " + } + if (targetAccess.additionalParams.isNotEmpty()) { + targetAccess.additionalParams + .joinToString { + it.toString() + } + .apply { +this } + } } if (irs.isNotEmpty()) { +" "; inBrackets { irs.listNl() } 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 de3dfa34786..db8df479840 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 @@ -44,7 +44,6 @@ interface JSConfigurator : ModuleConfiguratorWithModuleType, ModuleConfiguratorW GradlePlugin.gradleProperties .addValues( "kotlin.js.generate.executable.default" to "false", - "kotlin.js.compiler" to settingsValue(module, compiler).text.toLowerCase() ) override fun getConfiguratorSettings(): List> = @@ -139,9 +138,6 @@ abstract class JsSinglePlatformModuleConfigurator : super.getConfiguratorSettings() + super.getConfiguratorSettings() - @NonNls - override val suggestedModuleName = "js" - override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS override val canContainSubModules = false @@ -158,7 +154,7 @@ abstract class JsSinglePlatformModuleConfigurator : module: Module ): List = irsList { "kotlin" { - "js" { + "js(${reader.settingsValue(module, JSConfigurator.compiler).text})" { subTarget(module, reader) } } @@ -171,6 +167,9 @@ object BrowserJsSinglePlatformModuleConfigurator : JsSinglePlatformModuleConfigu @NonNls override val id = "jsBrowserSinglePlatform" + @NonNls + override val suggestedModuleName = "browser" + override val moduleKind = ModuleKind.singleplatformJsBrowser override fun getConfiguratorSettings(): List> { @@ -189,6 +188,9 @@ object NodeJsSinglePlatformModuleConfigurator : JsSinglePlatformModuleConfigurat @NonNls override val id = "jsNodeSinglePlatform" + @NonNls + override val suggestedModuleName = "nodejs" + override val moduleKind = ModuleKind.singleplatformJsNode override fun GradleIRListBuilder.subTarget(module: Module, reader: Reader) { 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 cd397328277..4a902a1cdc3 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 @@ -65,10 +65,14 @@ interface SimpleTargetConfigurator : TargetConfigurator { } } -internal fun Module.createTargetAccessIr(moduleSubType: ModuleSubType) = +internal fun Module.createTargetAccessIr( + moduleSubType: ModuleSubType, + additionalParams: List = listOf() +) = TargetAccessIR( moduleSubType, - name.takeIf { it != moduleSubType.name } + name.takeIf { it != moduleSubType.name }, + additionalParams.filterNotNull() ) @@ -94,9 +98,6 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit @NonNls override val id = "jsBrowser" - @NonNls - override val suggestedModuleName = "browser" - override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.browser") override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS @@ -105,7 +106,10 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit module: Module ): List = irsList { +DefaultTargetConfigurationIR( - module.createTargetAccessIr(ModuleSubType.js) + module.createTargetAccessIr( + ModuleSubType.js, + listOf(settingValue(module, JSConfigurator.compiler)?.text) + ) ) { browserSubTarget(module, this@createTargetIrs) } @@ -116,17 +120,16 @@ object JsNodeTargetConfigurator : JsTargetConfigurator { @NonNls override val id = "jsNode" - @NonNls - override val suggestedModuleName = "nodeJs" - override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.node") - override fun Reader.createTargetIrs( module: Module ): List = irsList { +DefaultTargetConfigurationIR( - module.createTargetAccessIr(ModuleSubType.js) + module.createTargetAccessIr( + ModuleSubType.js, + listOf(settingValue(module, JSConfigurator.compiler)?.text) + ) ) { nodejsSubTarget(module, this@createTargetIrs) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt index c8e4de5e8e4..b4cc2e27239 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt @@ -287,7 +287,7 @@ object FrontendApplicationProjectTemplate : ProjectTemplate() { get() = listOf( KotlinPlugin.modules.reference withValue listOf( Module( - "js", + "browser", BrowserJsSinglePlatformModuleConfigurator, template = SimpleJsClientTemplate(), sourcesets = SourcesetType.ALL.map { type -> @@ -312,7 +312,7 @@ object ReactApplicationProjectTemplate : ProjectTemplate() { get() = listOf( KotlinPlugin.modules.reference withValue listOf( Module( - "js", + "react", BrowserJsSinglePlatformModuleConfigurator, template = ReactJsClientTemplate(), sourcesets = SourcesetType.ALL.map { type -> @@ -431,7 +431,7 @@ object NodeJsApplicationProjectTemplate : ProjectTemplate() { get() = listOf( KotlinPlugin.modules.reference withValue listOf( Module( - "js", + "nodejs", NodeJsSinglePlatformModuleConfigurator, template = SimpleNodeJsTemplate(), sourcesets = SourcesetType.ALL.map { type ->