From 47125553cbd2c8b7d46196822146027e7cc731e3 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Sat, 25 Apr 2020 13:33:35 +0300 Subject: [PATCH] Wizard: fix android project template It was not able to be built as lint task required com.android.tools.build:gradle in classpath to work #KT-38579 fixed --- .../android/expected/android/build.gradle | 2 +- .../android/expected/android/build.gradle.kts | 2 +- .../android/expected/build.gradle | 14 ++++++ .../android/expected/build.gradle.kts | 14 ++++++ .../expected/androidApp/build.gradle | 2 +- .../expected/androidApp/build.gradle.kts | 2 +- .../expected/build.gradle | 15 ++++++- .../expected/build.gradle.kts | 14 ++++++ .../expected/shared/build.gradle | 2 +- .../expected/shared/build.gradle.kts | 2 +- .../ir/buildsystem/BuildSystemIR.kt | 4 ++ .../ir/buildsystem/BuildSystemPluginIR.kt | 7 +-- .../projectWizard/ir/buildsystem/IrsOwner.kt | 7 ++- .../ir/buildsystem/gradle/GradleIR.kt | 2 +- .../AndroidModuleConfigurator.kt | 4 +- ...AndroidSinglePlatformModuleConfigurator.kt | 45 ++++++++++++------- .../moduleConfigurators/ModuleConfigurator.kt | 3 ++ .../plugins/kotlin/ModulesToIRsConverter.kt | 17 ++++--- 18 files changed, 120 insertions(+), 38 deletions(-) diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle index aa7f000e3b3..e991dbe6cb1 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle @@ -1,6 +1,6 @@ plugins { id 'com.android.application' - id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION' + id 'org.jetbrains.kotlin.android' id 'kotlin-android-extensions' } group = 'testGroupId' diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle.kts index 84580461f68..6ab7db91117 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/android/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("com.android.application") - kotlin("android") version "KOTLIN_VERSION" + kotlin("android") id("kotlin-android-extensions") } group = "testGroupId" diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle index ce970238205..d42ce51381a 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle @@ -1,3 +1,17 @@ +buildscript { + repositories { + gradlePluginPortal() + jcenter() + google() + maven { + url 'https://dl.bintray.com/kotlin/kotlin-dev' + } + } + dependencies { + classpath('org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION') + classpath('com.android.tools.build:gradle:3.5.2') + } +} group = 'testGroupId' version = '1.0-SNAPSHOT' diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle.kts index 1300eaf36a6..d051be23fef 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/expected/build.gradle.kts @@ -1,3 +1,17 @@ +buildscript { + repositories { + gradlePluginPortal() + jcenter() + google() + maven { + url = uri("https://dl.bintray.com/kotlin/kotlin-dev") + } + } + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION") + classpath("com.android.tools.build:gradle:3.5.2") + } +} group = "testGroupId" version = "1.0-SNAPSHOT" diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle index dd3a71c0dff..7c84099ee5c 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle @@ -1,6 +1,6 @@ plugins { id 'com.android.application' - id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION' + id 'org.jetbrains.kotlin.android' id 'kotlin-android-extensions' } group = 'me.user' diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle.kts index de67ad56f9f..87cc21c9fe6 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/androidApp/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("com.android.application") - kotlin("android") version "KOTLIN_VERSION" + kotlin("android") id("kotlin-android-extensions") } group = "me.user" diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle index 7ae05bcc6c6..e373a63b060 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle @@ -1,4 +1,17 @@ - +buildscript { + repositories { + gradlePluginPortal() + jcenter() + google() + maven { + url 'https://dl.bintray.com/kotlin/kotlin-dev' + } + } + dependencies { + classpath('org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION') + classpath('com.android.tools.build:gradle:3.5.2') + } +} group = 'me.user' version = '1.0-SNAPSHOT' diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle.kts index 80ed2f2f9b9..8f112d96401 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/build.gradle.kts @@ -1,3 +1,17 @@ +buildscript { + repositories { + gradlePluginPortal() + jcenter() + google() + maven { + url = uri("https://dl.bintray.com/kotlin/kotlin-dev") + } + } + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION") + classpath("com.android.tools.build:gradle:3.5.2") + } +} group = "me.user" version = "1.0-SNAPSHOT" diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle index c6a17c738c0..616ab2fb265 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { - id 'org.jetbrains.kotlin.multiplatform' version 'KOTLIN_VERSION' + id 'org.jetbrains.kotlin.multiplatform' id 'com.android.library' id 'kotlin-android-extensions' } diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts index 05c4a719830..4d9b88a8c4d 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { - kotlin("multiplatform") version "KOTLIN_VERSION" + kotlin("multiplatform") id("com.android.library") id("kotlin-android-extensions") } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemIR.kt index 3b5adcbe4a5..8601e84d439 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemIR.kt @@ -8,6 +8,10 @@ interface BuildSystemIR : IR { fun BuildFilePrinter.render() } +interface BuildSystemIRWithPriority : BuildSystemIR { + val priority: Int? get() = null +} + // IR element, which is not hardcoded into the parent IR structure and can be printed // In any place of the parent IR interface FreeIR : BuildSystemIR diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt index 6c53fe210a0..67e84eb0f17 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt @@ -8,7 +8,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version -interface BuildSystemPluginIR : BuildSystemIR +interface BuildSystemPluginIR : BuildSystemIR, BuildSystemIRWithPriority interface DefaultBuildSystemPluginIR : BuildSystemPluginIR @@ -31,7 +31,7 @@ data class ApplicationPluginIR(val mainClass: String) : DefaultBuildSystemPlugin } } -data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String) : BuildSystemPluginIR, GradleIR { +data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String, override val priority: Int? = null) : BuildSystemPluginIR, GradleIR { override fun GradlePrinter.renderGradle() { call("id") { +pluginId.quotified } } @@ -39,7 +39,8 @@ data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String) : BuildSystemP data class KotlinBuildSystemPluginIR( val type: Type, - val version: Version? + val version: Version?, + override val priority: Int? = null ) : BuildSystemPluginIR { override fun BuildFilePrinter.render() = when (this) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/IrsOwner.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/IrsOwner.kt index 1ccce5698a9..3ef995f0f07 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/IrsOwner.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/IrsOwner.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.plus import kotlinx.collections.immutable.toPersistentList +import kotlin.reflect.full.isSubclassOf interface IrsOwner { @@ -18,7 +19,11 @@ fun I.withIrs(vararg irs: BuildSystemIR) = withReplacedIrs(irs = inline fun IrsOwner.irsOfType(): List = - irs.filterIsInstance() + irs.filterIsInstance().let { irs -> + if (I::class.isSubclassOf(BuildSystemIRWithPriority::class)) + irs.sortedBy { (it as BuildSystemIRWithPriority).priority } + else irs + } inline fun IrsOwner.irsOfTypeOrNull() = diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt index 6964b6e816e..2c2fa2309f2 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt @@ -153,5 +153,5 @@ data class GradleBinaryExpressionIR(val left: BuildSystemIR, val op: String, val interface BuildScriptIR : BuildSystemIR -data class BuildScriptDependencyIR(val dependencyIR: GradleIR) : BuildScriptIR, BuildSystemIR by dependencyIR +data class BuildScriptDependencyIR(val dependencyIR: BuildSystemIR) : BuildScriptIR, BuildSystemIR by dependencyIR data class BuildScriptRepositoryIR(val repositoryIR: RepositoryIR) : BuildScriptIR, BuildSystemIR by repositoryIR \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt index 487dac1c9a5..3e9e0a8b23e 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt @@ -52,9 +52,9 @@ interface AndroidModuleConfigurator : ModuleConfigurator, configurationData: ModulesToIrConversionData, module: Module ) = buildList { - +GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName) + +GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName, priority = 1) - +GradleOnlyPluginByNameIR("kotlin-android-extensions") + +GradleOnlyPluginByNameIR("kotlin-android-extensions", priority = 3) +AndroidConfigIR( when (reader.createAndroidPlugin(module)) { AndroidGradlePlugin.APPLICATION -> module.javaPackage(configurationData.pomIr) 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 b6e88893f6d..f5ea3389651 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 @@ -5,13 +5,18 @@ import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.Versions import org.jetbrains.kotlin.tools.projectWizard.core.* +import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptDependencyIR +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptRepositoryIR +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories import org.jetbrains.kotlin.tools.projectWizard.settings.javaPackage import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplate @@ -34,26 +39,32 @@ object AndroidSinglePlatformModuleConfigurator : override val resourcesDirectoryName: String = "res" override val kotlinDirectoryName: String = "java" - override fun createBuildFileIRs( - reader: Reader, - configurationData: ModulesToIrConversionData, - module: Module - ) = buildList { - +super.createBuildFileIRs(reader, configurationData, module) - // it is explicitly here instead of by `createKotlinPluginIR` as it should be after `com.android.application` - +KotlinBuildSystemPluginIR( - KotlinBuildSystemPluginIR.Type.android, - version = configurationData.kotlinVersion - ) - }.sortedBy { ir: BuildSystemIR -> - if (ir is GradleOnlyPluginByNameIR) { - // TODO implement proper sort on irs - // But for now kotlin-android-extensions should be after Android kotlin plugin - if (ir.pluginId == "kotlin-android-extensions") 1 else 0 - } else 0 + override fun createRootBuildFileIrs(configurationData: ModulesToIrConversionData): List = irsList { + listOf( + DefaultRepository.GRADLE_PLUGIN_PORTAL, + DefaultRepository.JCENTER, + DefaultRepository.GOOGLE, + configurationData.kotlinVersion.kotlinVersionKind.repository + ).forEach { repository -> + +BuildScriptRepositoryIR(RepositoryIR((repository))) + } + + irsList { + "classpath"(const("org.jetbrains.kotlin:kotlin-gradle-plugin:${configurationData.kotlinVersion}")) + "classpath"(const("com.android.tools.build:gradle:${Versions.GRADLE_PLUGINS.ANDROID}")) + }.forEach { + +BuildScriptDependencyIR(it) + } } + override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? = + KotlinBuildSystemPluginIR( + KotlinBuildSystemPluginIR.Type.android, + version = configurationData.kotlinVersion, + priority = 2 + ) + override fun createModuleIRs( reader: Reader, configurationData: ModulesToIrConversionData, 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 692ef0a4b7d..560c1ad1061 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 @@ -6,6 +6,7 @@ import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.* import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType @@ -222,6 +223,8 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor { ): List = emptyList() + fun createBuildFileIRsComparator(): Comparator? = null + fun createModuleIRs( reader: Reader, configurationData: ModulesToIrConversionData, 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 ba6098433ff..24ac0d87f79 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 @@ -69,8 +69,12 @@ class ModulesToIRsConverter( fun Writer.createBuildFiles(): TaskResult> = with(data) { val needExplicitRootBuildFile = !needFlattening val initialState = ModulesToIrsState(projectPath, parentModuleHasTransitivelySpecifiedKotlinVersion = false) + + val parentModuleHasKotlinVersion = allModules.any { module -> + module.configurator == AndroidSinglePlatformModuleConfigurator + } + rootModules.mapSequence { module -> - val parentModuleHasKotlinVersion = module.configurator == AndroidSinglePlatformModuleConfigurator createBuildFileForModule( module, initialState.copy(parentModuleHasTransitivelySpecifiedKotlinVersion = parentModuleHasKotlinVersion) @@ -174,11 +178,11 @@ class ModulesToIRsConverter( } module.subModules.mapSequence { subModule -> - createBuildFileForModule( - subModule, - state.stateForSubModule(modulePath) - ) - }.map { it.flatten() } + createBuildFileForModule( + subModule, + state.stateForSubModule(modulePath) + ) + }.map { it.flatten() } .map { children -> buildFileIR?.let { children + it } ?: children } @@ -280,7 +284,6 @@ class ModulesToIRsConverter( // do not print version for non-root modules for gradle val needRemoveVersion = data.buildSystemType.isGradle && state.parentModuleHasTransitivelySpecifiedKotlinVersion - && module.configurator != AndroidSinglePlatformModuleConfigurator when { needRemoveVersion -> plugin.copy(version = null) else -> plugin