From d639816393edc8f5826f053f989845d8bb160e29 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Thu, 27 Feb 2020 19:34:45 +0300 Subject: [PATCH] Wizard: use kotlinx-collections-immutable for storing IRs --- .../tools/new-project-wizard/build.gradle.kts | 1 + .../kotlin/tools/projectWizard/core/utils.kt | 4 ++++ .../ir/buildsystem/BuildFileIR.kt | 17 +++++++------- .../projectWizard/ir/buildsystem/IrsOwner.kt | 8 ++++--- .../projectWizard/ir/buildsystem/ModuleIR.kt | 9 ++++---- .../ir/buildsystem/SourcesetIR.kt | 9 ++++---- .../gradle/SettingsGradleFileIR.kt | 5 +++-- .../ir/buildsystem/gradle/multiplatform/ir.kt | 13 ++++++----- .../NativeTargetConfigurator.kt | 3 ++- .../moduleConfigurators/TargetConfigurator.kt | 8 ++++--- .../tools/projectWizard/plugins/Plugins.kt | 3 ++- .../buildSystem/gradle/GradlePlugin.kt | 5 ++++- .../plugins/kotlin/ModulesToIRsConverter.kt | 22 ++++++++++--------- 13 files changed, 64 insertions(+), 43 deletions(-) diff --git a/libraries/tools/new-project-wizard/build.gradle.kts b/libraries/tools/new-project-wizard/build.gradle.kts index 40172bd8336..386090c93a0 100644 --- a/libraries/tools/new-project-wizard/build.gradle.kts +++ b/libraries/tools/new-project-wizard/build.gradle.kts @@ -9,6 +9,7 @@ dependencies { testImplementation(project(":kotlin-test:kotlin-test-junit")) testImplementation(commonDep("junit:junit")) + implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.2") } sourceSets { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt index ee7536abe9f..1694c07deb3 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.core +import kotlinx.collections.immutable.toPersistentList import java.io.IOException import java.nio.file.Path import java.nio.file.Paths @@ -95,6 +96,9 @@ class ListBuilder { fun buildList(builder: ListBuilder.() -> Unit) = ListBuilder().apply(builder).build() +fun buildPersistenceList(builder: ListBuilder.() -> Unit) = + buildList(builder).toPersistentList() + object RandomIdGenerator { private val chars = ('a'..'z') + ('A'..'Z') + ('0'..'9') private const val idLength = 8 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt index 10516cd0d46..1102d5a4c8b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem +import kotlinx.collections.immutable.PersistentList import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.safeAs import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.* @@ -21,9 +22,9 @@ data class BuildFileIR( val directoryPath: Path, val modules: ModulesStructureIR, val pom: PomIR, - override val irs: List + override val irs: PersistentList ) : FileIR { - override fun withReplacedIrs(irs: List): BuildFileIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): BuildFileIR = copy(irs = irs) @Suppress("UNCHECKED_CAST") fun withModulesUpdated(updater: (ModuleIR) -> TaskResult): TaskResult = @@ -139,12 +140,12 @@ sealed class ModulesStructureIR : BuildSystemIR, IrsOwner { data class MultiplatformModulesStructureIR( val targets: List, override val modules: List, - override val irs: List + override val irs: PersistentList ) : GradleIR, ModulesStructureIR() { @Suppress("UNCHECKED_CAST") override fun withModules(modules: List) = copy(modules = modules as List) - override fun withReplacedIrs(irs: List): MultiplatformModulesStructureIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): MultiplatformModulesStructureIR = copy(irs = irs) override fun GradlePrinter.renderGradle() { sectionCall("kotlin") { @@ -173,10 +174,10 @@ fun MultiplatformModulesStructureIR.updateTargets( data class SingleplatformModulesStructureWithSingleModuleIR( val module: SingleplatformModuleIR, - override val irs: List + override val irs: PersistentList ) : ModulesStructureIR() { override val modules: List = listOf(module) - override fun withReplacedIrs(irs: List): SingleplatformModulesStructureWithSingleModuleIR = + override fun withReplacedIrs(irs: PersistentList): SingleplatformModulesStructureWithSingleModuleIR = copy(irs = irs) @Suppress("UNCHECKED_CAST") @@ -188,10 +189,10 @@ data class SingleplatformModulesStructureWithSingleModuleIR( } } -data class RootFileModuleStructureIR(override val irs: List) : ModulesStructureIR() { +data class RootFileModuleStructureIR(override val irs: PersistentList) : ModulesStructureIR() { override val modules = emptyList() - override fun withReplacedIrs(irs: List): RootFileModuleStructureIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): RootFileModuleStructureIR = copy(irs = irs) override fun BuildFilePrinter.render() = when (this) { is MavenPrinter -> { 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 ca6711fc284..892f12564be 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 @@ -1,13 +1,15 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem +import kotlinx.collections.immutable.* + interface IrsOwner { - val irs: List - fun withReplacedIrs(irs: List): IrsOwner + val irs: PersistentList + fun withReplacedIrs(irs: PersistentList): IrsOwner } @Suppress("UNCHECKED_CAST") -fun I.withIrs(irs: List) = withReplacedIrs(irs = this.irs + irs) as I +fun I.withIrs(irs: List) = withReplacedIrs(irs = this.irs + irs.toPersistentList()) as I @Suppress("UNCHECKED_CAST") fun I.withIrs(vararg irs: BuildSystemIR) = withReplacedIrs(irs = this.irs + irs) as I 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 c813bb9699d..0ab7e2f4bae 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 @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem +import kotlinx.collections.immutable.PersistentList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIR import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter @@ -24,12 +25,12 @@ sealed class ModuleIR : IrsOwner, BuildSystemIR { data class SingleplatformModuleIR( override val name: String, override val path: Path, - override val irs: List, + override val irs: PersistentList, override val template: Template?, override val originalModule: Module, override val sourcesets: List ) : ModuleIR() { - override fun withReplacedIrs(irs: List): SingleplatformModuleIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): SingleplatformModuleIR = copy(irs = irs) override fun BuildFilePrinter.render() = when (this) { is GradlePrinter -> { @@ -49,12 +50,12 @@ data class SingleplatformModuleIR( data class MultiplatformModuleIR( override val name: String, override val path: Path, - override val irs: List, + override val irs: PersistentList, override val template: Template?, override val originalModule: Module, override val sourcesets: List ) : GradleIR, ModuleIR() { - override fun withReplacedIrs(irs: List): MultiplatformModuleIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): MultiplatformModuleIR = copy(irs = irs) override fun GradlePrinter.renderGradle() { sourcesets.map { sourceset -> diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt index 773a8202f90..fa4737046c9 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem +import kotlinx.collections.immutable.PersistentList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIR import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter @@ -22,10 +23,10 @@ sealed class SourcesetIR : BuildSystemIR { data class SingleplatformSourcesetIR( override val sourcesetType: SourcesetType, override val path: Path, - override val irs: List, + override val irs: PersistentList, override val original: Sourceset ) : SourcesetIR(), IrsOwner { - override fun withReplacedIrs(irs: List): SingleplatformSourcesetIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): SingleplatformSourcesetIR = copy(irs = irs) override fun BuildFilePrinter.render() = Unit } @@ -33,10 +34,10 @@ data class MultiplatformSourcesetIR( override val sourcesetType: SourcesetType, override val path: Path, val targetName: String, - override val irs: List, + override val irs: PersistentList, override val original: Sourceset ) : SourcesetIR(), IrsOwner, GradleIR { - override fun withReplacedIrs(irs: List): MultiplatformSourcesetIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): MultiplatformSourcesetIR = copy(irs = irs) override fun GradlePrinter.renderGradle() = getting(sourcesetName, prefix = null) { val dependencies = irsOfType() diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt index ca80a29a974..262a4bb628f 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt @@ -5,15 +5,16 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle +import kotlinx.collections.immutable.PersistentList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter data class SettingsGradleFileIR( val projectName: String, val subProjects: List, - override val irs: List + override val irs: PersistentList ) : FileIR, GradleIR { - override fun withReplacedIrs(irs: List): SettingsGradleFileIR = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList): SettingsGradleFileIR = copy(irs = irs) override fun GradlePrinter.renderGradle() { irsOfTypeOrNull()?.let { pluginManagementIrs -> 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 798329534af..817f72af8f9 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 @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform +import kotlinx.collections.immutable.PersistentList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.IrsOwner import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinIR @@ -37,12 +38,12 @@ fun TargetConfigurationIR.addWithJavaIntoJvmTarget() = when { data class DefaultTargetConfigurationIR( val targetAccess: TargetAccessIR, - override val irs: List + override val irs: PersistentList ) : TargetConfigurationIR { override val targetName: String get() = targetAccess.nonDefaultName ?: targetAccess.type.name - override fun withReplacedIrs(irs: List): DefaultTargetConfigurationIR = + override fun withReplacedIrs(irs: PersistentList): DefaultTargetConfigurationIR = copy(irs = irs) override fun GradlePrinter.renderGradle() { @@ -59,9 +60,9 @@ data class DefaultTargetConfigurationIR( data class NonDefaultTargetConfigurationIR( val variableName: String, override val targetName: String, - override val irs: List + override val irs: PersistentList ) : TargetConfigurationIR { - override fun withReplacedIrs(irs: List): NonDefaultTargetConfigurationIR = + override fun withReplacedIrs(irs: PersistentList): NonDefaultTargetConfigurationIR = copy(irs = irs) override fun GradlePrinter.renderGradle() { @@ -78,9 +79,9 @@ data class NonDefaultTargetConfigurationIR( data class CompilationIR( val name: String, - override val irs: List + override val irs: PersistentList ) : MultiplatformIR, IrsOwner { - override fun withReplacedIrs(irs: List) = copy(irs = irs) + override fun withReplacedIrs(irs: PersistentList) = copy(irs = irs) override fun GradlePrinter.renderGradle() { getting(name, "compilations") { irs.listNl() } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt index d7802a10bb2..92071c9fc65 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import kotlinx.collections.immutable.toPersistentList import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR @@ -69,7 +70,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc +NonDefaultTargetConfigurationIR( variableName = variableName, targetName = moduleName, - irs = createInnerTargetIrs(module) + irs = createInnerTargetIrs(module).toPersistentList() ) } } 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 90e0591c3f5..48ec4cf33d6 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 @@ -1,7 +1,9 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import kotlinx.collections.immutable.toPersistentList import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext import org.jetbrains.kotlin.tools.projectWizard.core.buildList +import org.jetbrains.kotlin.tools.projectWizard.core.buildPersistenceList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR @@ -41,7 +43,7 @@ interface SimpleTargetConfigurator : TargetConfigurator { override fun ReadingContext.createTargetIrs(module: Module): List = buildList { +DefaultTargetConfigurationIR( module.createTargetAccessIr(moduleSubType), - createInnerTargetIrs(module) + createInnerTargetIrs(module).toPersistentList() ) } } @@ -65,7 +67,7 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit override fun ReadingContext.createTargetIrs(module: Module): List = buildList { +DefaultTargetConfigurationIR( module.createTargetAccessIr(ModuleSubType.js), - buildList { + buildPersistenceList { +RawGradleIR { sectionCall("browser") {} } @@ -83,7 +85,7 @@ object JsNodeTargetConfigurator : JsTargetConfigurator { override fun ReadingContext.createTargetIrs(module: Module): List = buildList { +DefaultTargetConfigurationIR( module.createTargetAccessIr(ModuleSubType.js), - buildList { + buildPersistenceList { +RawGradleIR { sectionCall("nodejs") {} } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/Plugins.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/Plugins.kt index 19dbde493ca..c4b136bf66a 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/Plugins.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/Plugins.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins +import kotlinx.collections.immutable.persistentListOf import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.JpsPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.MavenPlugin @@ -11,7 +12,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.* object Plugins { val allPlugins = { context: Context -> - listOf( + persistentListOf( StructurePlugin(context), GroovyDslPlugin(context), diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt index 2e142db2608..f85917167f7 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt @@ -126,7 +126,10 @@ abstract class GradlePlugin(context: Context) : BuildSystemPlugin(context) { val settingsGradleIR = SettingsGradleFileIR( StructurePlugin::name.settingValue, allModulesPaths.map { path -> path.joinToString(separator = "") { ":$it" } }, - repositories + GradlePlugin::settingsGradleFileIRs.propertyValue + buildPersistenceList { + +repositories + +GradlePlugin::settingsGradleFileIRs.propertyValue + } ) val buildFileText = createBuildFile().printBuildFile { settingsGradleIR.render(this) } service().createFile( 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 9bda79fd3ac..888d66c3c35 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 @@ -1,5 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toPersistentList import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext import org.jetbrains.kotlin.tools.projectWizard.core.* @@ -79,9 +81,9 @@ class ModulesToIRsConverter( BuildFileIR( projectName, projectPath, - RootFileModuleStructureIR(emptyList()), + RootFileModuleStructureIR(persistentListOf()), pomIr, - rootBuildFileIrs + rootBuildFileIrs.toPersistentList() ) } @@ -102,7 +104,7 @@ class ModulesToIRsConverter( val modulePath = calculatePathForModule(module, state.parentPath) writingContext.mutateProjectStructureByModuleConfigurator(module, modulePath) val configurator = module.configurator - val dependenciesIRs = buildList { + val dependenciesIRs = buildPersistenceList { +module.sourcesets.flatMap { sourceset -> sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) } } @@ -129,7 +131,7 @@ class ModulesToIRsConverter( SingleplatformSourcesetIR( sourceset.sourcesetType, modulePath / Defaults.SRC_DIR / sourceset.sourcesetType.name, - sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }, + sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }.toPersistentList(), sourceset ) } @@ -139,7 +141,7 @@ class ModulesToIRsConverter( modulePath, SingleplatformModulesStructureWithSingleModuleIR( moduleIr, - emptyList() + persistentListOf() ), pomIr.copy(artifactId = module.name), createBuildFileIRs(module, state) @@ -173,10 +175,10 @@ class ModulesToIRsConverter( MultiplatformModulesStructureIR( targetIrs, targetModuleIrs, - emptyList() + persistentListOf() ), pomIr, - buildList { + buildPersistenceList { +createBuildFileIRs(module, state) module.subModules.forEach { +createBuildFileIRs(it, state) } } @@ -206,14 +208,14 @@ class ModulesToIRsConverter( sourceset.sourcesetType, modulePath / Defaults.SRC_DIR / sourcesetName, target.name, - sourcesetIrs, + sourcesetIrs.toPersistentList(), sourceset ) } return MultiplatformModuleIR( target.name, modulePath, - with(target.configurator) { createModuleIRs(this@createTargetModule, data, target) }, + with(target.configurator) { createModuleIRs(this@createTargetModule, data, target) }.toPersistentList(), target.template, target, sourcesetss @@ -236,7 +238,7 @@ class ModulesToIRsConverter( private fun ReadingContext.createBuildFileIRs( module: Module, state: ModulesToIrsState - ) = buildList { + ) = buildPersistenceList { val kotlinPlugin = module.configurator.createKotlinPluginIR(data, module) ?.let { plugin -> // do not print version for non-root modules for gradle