From fabb0584dadaa617aa762fac90148237f57b11bd Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 10 Feb 2020 16:53:27 +0300 Subject: [PATCH] Wizard: remove module types for some module configurators #KT-36176 fixed --- .../wizard/ui/secondStep/ModuleSettingsComponent.kt | 1 + .../wizard/ui/secondStep/TemplatesComponent.kt | 1 + .../modulesEditor/CreateModuleOrTargetPopup.kt | 3 ++- .../ui/secondStep/modulesEditor/NewModuleCreator.kt | 2 -- .../kotlin/tools/projectWizard/wizard/ui/ui.kt | 2 +- .../tools/projectWizard/ir/buildsystem/ModuleIR.kt | 3 --- .../AndroidSinglePlatformModuleConfigurator.kt | 3 ++- .../moduleConfigurators/JsModuleConfigurator.kt | 2 +- .../moduleConfigurators/ModuleConfigurator.kt | 3 +-- .../ModuleConfiguratorWithTests.kt | 3 ++- .../moduleConfigurators/TargetConfigurator.kt | 2 +- .../moduleConfigurators/configurators.kt | 13 +++++++++---- .../plugins/kotlin/ModulesToIRsConverter.kt | 2 -- .../projectTemplates/ProjectTemplate.kt | 5 ++--- .../projectWizard/settings/buildsystem/Module.kt | 2 +- .../projectWizard/settings/buildsystem/Sourceset.kt | 5 ++--- 16 files changed, 26 insertions(+), 26 deletions(-) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt index b36d909afb2..7d3b3f717bd 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.configuratorSettings +import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module.Companion.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt index 855a18e8487..82975343089 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt @@ -10,6 +10,7 @@ import com.intellij.util.ui.UIUtil import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext +import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.templates.Template diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt index 92a5d3985d2..d109677657b 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEditor +import com.intellij.icons.AllIcons import com.intellij.openapi.ui.popup.ListPopup import com.intellij.openapi.ui.popup.PopupStep import com.intellij.openapi.ui.popup.util.BaseListPopupStep @@ -71,7 +72,7 @@ class CreateModuleOrTargetPopup private constructor( ) { override fun getIconFor(value: DisplayableSettingItem): Icon? = when (value) { is DisplayableTargetConfiguratorGroup -> value.moduleType.icon - is ModuleConfigurator -> value.moduleType.icon + is ModuleConfigurator -> value.moduleType?.icon ?: AllIcons.Nodes.Module else -> null } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/NewModuleCreator.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/NewModuleCreator.kt index 0e6fc602c08..639ec369140 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/NewModuleCreator.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/NewModuleCreator.kt @@ -27,7 +27,6 @@ class NewModuleCreator { SourcesetType.values().map { sourcesetType -> Sourceset( sourcesetType, - configurator.moduleType, dependencies = emptyList() ) } @@ -57,7 +56,6 @@ class NewModuleCreator { else -> SourcesetType.values().map { sourcesetType -> Sourceset( sourcesetType, - ModuleType.jvm, dependencies = emptyList() ) } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt index be2a4d8059b..4384125f5d0 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt @@ -89,7 +89,7 @@ val ModuleType.icon: Icon val Module.icon: Icon get() = when (kind) { - ModuleKind.target -> configurator.moduleType.icon + ModuleKind.target -> (configurator as TargetConfigurator).moduleType.icon ModuleKind.multiplatform -> AllIcons.Nodes.Module ModuleKind.singleplatformJs -> KotlinIcons.JS ModuleKind.singleplatformJvm -> AllIcons.Nodes.Module diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt index 209e083c7ec..c813bb9699d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt @@ -16,7 +16,6 @@ sealed class ModuleIR : IrsOwner, BuildSystemIR { abstract val name: String abstract val path: Path abstract val template: Template? - abstract val type: ModuleType abstract val originalModule: Module abstract val sourcesets: List } @@ -27,7 +26,6 @@ data class SingleplatformModuleIR( override val path: Path, override val irs: List, override val template: Template?, - override val type: ModuleType, override val originalModule: Module, override val sourcesets: List ) : ModuleIR() { @@ -52,7 +50,6 @@ data class MultiplatformModuleIR( override val name: String, override val path: Path, override val irs: List, - override val type: ModuleType, override val template: Template?, override val originalModule: Module, override val sourcesets: List diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt index f9f14151bf9..0b4725e58a1 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt @@ -26,7 +26,8 @@ import java.nio.file.Path object AndroidSinglePlatformModuleConfigurator : ModuleConfiguratorWithSettings(), SinglePlatformModuleConfigurator, - AndroidModuleConfigurator { + AndroidModuleConfigurator, + ModuleConfiguratorWithModuleType{ override val moduleType = ModuleType.jvm override val id = "android" override val suggestedModuleName = "android" 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 cc3191424c9..00b8f7634aa 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 @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind -interface JSConfigurator : ModuleConfigurator { +interface JSConfigurator : ModuleConfiguratorWithModuleType { override val moduleType: ModuleType get() = ModuleType.js } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt index 543f6922dd0..272f67e594b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt @@ -184,7 +184,6 @@ val Module.configuratorSettings interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor { val moduleKind: ModuleKind - val moduleType: ModuleType override val text: String get() = id @@ -198,7 +197,7 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor { emptyList() fun createStdlibType(configurationData: ModuleConfigurationData, module: Module): StdlibType? = - moduleType.correspondingStdlib() + safeAs()?.moduleType?.correspondingStdlib() fun createRootBuildFileIrs(configurationData: ModuleConfigurationData): List = emptyList() fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? = diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt index 986ca1f89c8..9bb49279c01 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext import org.jetbrains.kotlin.tools.projectWizard.core.entity.ModuleConfiguratorSetting import org.jetbrains.kotlin.tools.projectWizard.core.entity.ModuleConfiguratorSettingReference +import org.jetbrains.kotlin.tools.projectWizard.core.safeAs import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinArbitraryDependencyIR @@ -29,7 +30,7 @@ abstract class ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings() { filter = filter@{ reference, kotlinTestFramework -> if (reference !is ModuleConfiguratorSettingReference<*, *>) return@filter true - val moduleType = reference.module?.configurator?.moduleType + val moduleType = reference.module?.configurator?.safeAs()?.moduleType kotlinTestFramework.moduleType == moduleType } } 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 48b4388c45f..56cdc2a38d2 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 @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind -interface TargetConfigurator : ModuleConfigurator { +interface TargetConfigurator : ModuleConfiguratorWithModuleType { override val moduleKind get() = ModuleKind.target fun canCoexistsWith(other: List): Boolean = true diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt index 90563dd93e8..e36debcffe5 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.kotlin.tools.projectWizard.core.safeAs import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType @@ -9,9 +10,14 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind interface JvmModuleConfigurator : ModuleConfigurator interface AndroidModuleConfigurator : ModuleConfigurator +interface ModuleConfiguratorWithModuleType : ModuleConfigurator { + val moduleType: ModuleType +} + +val ModuleConfigurator.moduleType: ModuleType? + get() = safeAs()?.moduleType object MppModuleConfigurator : ModuleConfigurator { - override val moduleType = ModuleType.jvm // TODO override val moduleKind = ModuleKind.multiplatform override val suggestedModuleName = "shared" override val id = "multiplatform" @@ -28,12 +34,12 @@ object MppModuleConfigurator : ModuleConfigurator { interface SinglePlatformModuleConfigurator : ModuleConfigurator { override val moduleKind get() = ModuleKind.singleplatformJvm - } object JvmSinglePlatformModuleConfigurator : ModuleConfiguratorWithTests(), SinglePlatformModuleConfigurator, - JvmModuleConfigurator { + JvmModuleConfigurator, + ModuleConfiguratorWithModuleType { override val moduleType get() = ModuleType.jvm override val suggestedModuleName = "jvm" override val id = "JVM Module" @@ -52,7 +58,6 @@ object JvmSinglePlatformModuleConfigurator : ModuleConfiguratorWithTests(), object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator { - override val moduleType get() = ModuleType.jvm //todo override val id = "IOS Module" override val suggestedModuleName = "ios" override val greyText = "Requires Apple Xcode" diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt index 925cac1f4e3..66504a0ebed 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt @@ -120,7 +120,6 @@ class ModulesToIRsConverter( modulePath, dependenciesIRs, module.template, - module.configurator.moduleType, module, module.sourcesets.map { sourceset -> SingleplatformSourcesetIR( @@ -210,7 +209,6 @@ class ModulesToIRsConverter( target.name, modulePath, with(target.configurator) { createModuleIRs(data, target) }, - target.configurator.moduleType, target.template, target, sourcesetss 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 0d4ce99d448..672d284329d 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 @@ -88,7 +88,6 @@ private fun ModuleType.createDefaultSourcesets() = SourcesetType.values().map { sourcesetType -> Sourceset( sourcesetType, - this, dependencies = emptyList() ) } @@ -212,7 +211,7 @@ object AndroidApplication : ProjectTemplate() { AndroidSinglePlatformModuleConfigurator, template = null, sourcesets = SourcesetType.ALL.map { type -> - Sourceset(type, ModuleType.jvm, dependencies = emptyList()) + Sourceset(type, dependencies = emptyList()) }, subModules = emptyList() ) @@ -260,7 +259,7 @@ object JsBrowserApplication : ProjectTemplate() { JsSingleplatformModuleConfigurator, template = SimpleJsClientTemplate(), sourcesets = SourcesetType.ALL.map { type -> - Sourceset(type, ModuleType.jvm, dependencies = emptyList()) + Sourceset(type, dependencies = emptyList()) }, subModules = emptyList() ) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt index 842d2dc7411..35341a6fa57 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt @@ -98,7 +98,7 @@ class Module( this, path, "sourcesets", - listParser(Sourceset.parser(configurator.moduleType)) + listParser(Sourceset.parser()) ) { emptyList() } val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() } Module(name, kind, configurator, template, sourcesets, submodules, identificator = identificator) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt index e1c0b14f9c2..e0aefab31ff 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt @@ -35,7 +35,6 @@ data class PathBasedSourcesetDependency(val path: ModulePath) : SourcesetDepende // A `main` or `test` sourceset for single or multiplatform projects class Sourceset( val sourcesetType: SourcesetType, - val containingModuleType: ModuleType, var dependencies: List, var parent: Module? = null, override val identificator: Identificator = GeneratedIdentificator(sourcesetType.name) @@ -44,7 +43,7 @@ class Sourceset( override val greyText: String? get() = null companion object { - fun parser(moduleType: ModuleType) = mapParser { map, path -> + fun parser() = mapParser { map, path -> val (sourcesetType) = map.parseValue(this, path, "type", enumParser()) val identificator = GeneratedIdentificator(sourcesetType.name) val (dependencies) = map.parseValue( @@ -54,7 +53,7 @@ class Sourceset( listParser(PathBasedSourcesetDependency.parser) ) { emptyList() } - Sourceset(sourcesetType, moduleType, dependencies, identificator = identificator) + Sourceset(sourcesetType, dependencies, identificator = identificator) } } }