From 645bbc93cb75895d370b442b5c73357c737905d7 Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Wed, 17 Jul 2019 18:01:32 +0300 Subject: [PATCH] KotlinWithGradleConfigurator: support addKotlinLibraryToModuleBuildScript for multiplatform #KT-27270 Fixed --- .../GradleBuildScriptManipulator.kt | 2 + .../GroovyBuildScriptManipulator.kt | 31 ++++++--- .../KotlinBuildScriptManipulator.kt | 66 +++++++++++++++---- .../KotlinWithGradleConfigurator.kt | 2 +- .../GradleConfiguratorPlatformSpecificTest.kt | 46 +++++++++++++ .../ConfigureKotlinInProjectUtils.kt | 8 +-- .../addLibrary/build.gradle.after | 4 +- .../addLibraryGSK/build.gradle.kts.3.5.after | 2 +- .../addLibraryGSK/build.gradle.kts.4.9.after | 2 +- .../build.gradle.kts.after | 2 +- .../addLibraryMultiplatform/build.gradle | 58 ++++++++++++++++ .../build.gradle.after | 63 ++++++++++++++++++ .../build.gradle.kts | 21 ++++++ .../build.gradle.kts.after | 26 ++++++++ .../build.gradle.kts | 23 +++++++ .../build.gradle.kts.after | 26 ++++++++ .../build.gradle.kts | 25 +++++++ .../build.gradle.kts.after | 26 ++++++++ .../build.gradle.kts | 22 +++++++ .../build.gradle.kts.after | 26 ++++++++ .../build.gradle.kts | 23 +++++++ .../build.gradle.kts.after | 26 ++++++++ .../build.gradle.kts.after | 2 +- .../build.gradle.kts.3.5.after | 4 +- .../build.gradle.kts.4.9.after | 4 +- .../addKotlinReflect/build.gradle.after | 2 +- 26 files changed, 507 insertions(+), 35 deletions(-) create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle.after create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts.after diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt index d4c581aba6b..6f14e61d65d 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.idea.configuration import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil +import com.intellij.openapi.module.Module import com.intellij.openapi.roots.DependencyScope import com.intellij.openapi.roots.ExternalLibraryDescriptor import com.intellij.psi.PsiElement @@ -53,6 +54,7 @@ interface GradleBuildScriptManipulator { fun changeApiVersion(version: String, forTests: Boolean): PsiElement? fun addKotlinLibraryToModuleBuildScript( + targetModule: Module, scope: DependencyScope, libraryDescriptor: ExternalLibraryDescriptor ) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt index a1f0dae1f3a..5ba3d815184 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.configuration +import com.intellij.openapi.module.Module import com.intellij.openapi.roots.DependencyScope import com.intellij.openapi.roots.ExternalLibraryDescriptor import com.intellij.openapi.util.text.StringUtil @@ -139,7 +140,7 @@ class GroovyBuildScriptManipulator( override fun changeCoroutineConfiguration(coroutineOption: String): PsiElement? { val snippet = "coroutines \"$coroutineOption\"" - val kotlinBlock = scriptFile.getBlockOrCreate("kotlin") + val kotlinBlock = scriptFile.getKotlinBlock() kotlinBlock.getBlockOrCreate("experimental").apply { addOrReplaceExpression(snippet) { stmt -> (stmt as? GrMethodCall)?.invokedExpression?.text == "coroutines" @@ -156,8 +157,8 @@ class GroovyBuildScriptManipulator( ): PsiElement? { if (usesNewMultiplatform()) { state.assertApplicableInMultiplatform() - val kotlinBlock = scriptFile.getBlockOrCreate("kotlin") - val sourceSetsBlock = kotlinBlock.getBlockOrCreate("sourceSets") + val kotlinBlock = scriptFile.getKotlinBlock() + val sourceSetsBlock = kotlinBlock.getSourceSetsBlock() val allBlock = sourceSetsBlock.getBlockOrCreate("all") allBlock.addLastExpressionInBlockIfNeeded("languageSettings.enableLanguageFeature(\"${feature.name}\")") return allBlock.statements.lastOrNull() @@ -184,6 +185,7 @@ class GroovyBuildScriptManipulator( changeKotlinTaskParameter(scriptFile, "apiVersion", version, forTests) override fun addKotlinLibraryToModuleBuildScript( + targetModule: Module, scope: DependencyScope, libraryDescriptor: ExternalLibraryDescriptor ) { @@ -195,8 +197,17 @@ class GroovyBuildScriptManipulator( libraryDescriptor.maxVersion ) - scriptFile.getDependenciesBlock().apply { - addLastExpressionInBlockIfNeeded(dependencyString) + if (usesNewMultiplatform()) { + scriptFile + .getKotlinBlock() + .getSourceSetsBlock() + .getBlockOrCreate(targetModule.name.takeLastWhile { it != '.' }) + .getDependenciesBlock() + .addLastExpressionInBlockIfNeeded(dependencyString) + } else { + scriptFile.getDependenciesBlock().apply { + addLastExpressionInBlockIfNeeded(dependencyString) + } } } @@ -282,7 +293,7 @@ class GroovyBuildScriptManipulator( replaceIt: GrStatement.(Boolean) -> GrStatement ): PsiElement? { if (usesNewMultiplatform()) { - val kotlinBlock = gradleFile.getBlockOrCreate("kotlin") + val kotlinBlock = gradleFile.getKotlinBlock() val kotlinTargets = kotlinBlock.getBlockOrCreate("targets") val targetNames = mutableListOf() @@ -378,10 +389,10 @@ class GroovyBuildScriptManipulator( } private fun GrStatementOwner.getBuildScriptRepositoriesBlock(): GrClosableBlock = - getBuildScriptBlock().getBlockOrCreate("repositories") + getBuildScriptBlock().getRepositoriesBlock() private fun GrStatementOwner.getBuildScriptDependenciesBlock(): GrClosableBlock = - getBuildScriptBlock().getBlockOrCreate("dependencies") + getBuildScriptBlock().getDependenciesBlock() private fun GrClosableBlock.addMavenCentralIfMissing(): Boolean = if (!isRepositoryConfigured(text)) addLastExpressionInBlockIfNeeded(MAVEN_CENTRAL) else false @@ -390,6 +401,10 @@ class GroovyBuildScriptManipulator( private fun GrStatementOwner.getDependenciesBlock(): GrClosableBlock = getBlockOrCreate("dependencies") + private fun GrStatementOwner.getKotlinBlock(): GrClosableBlock = getBlockOrCreate("kotlin") + + private fun GrStatementOwner.getSourceSetsBlock(): GrClosableBlock = getBlockOrCreate("sourceSets") + private fun GrClosableBlock.addOrReplaceExpression(snippet: String, predicate: (GrStatement) -> Boolean) { statements.firstOrNull(predicate)?.let { stmt -> stmt.replaceWithStatementFromText(snippet) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt index ab7d4c4eebb..f32cda3bcf2 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.configuration +import com.intellij.openapi.module.Module import com.intellij.openapi.roots.DependencyScope import com.intellij.openapi.roots.ExternalLibraryDescriptor import com.intellij.openapi.util.text.StringUtil @@ -116,21 +117,51 @@ class KotlinBuildScriptManipulator( scriptFile.changeKotlinTaskParameter("apiVersion", version, forTests) override fun addKotlinLibraryToModuleBuildScript( + targetModule: Module, scope: DependencyScope, libraryDescriptor: ExternalLibraryDescriptor ) { - scriptFile.getDependenciesBlock()?.apply { - addExpressionIfMissing( - getCompileDependencySnippet( - libraryDescriptor.libraryGroupId, - libraryDescriptor.libraryArtifactId, - libraryDescriptor.maxVersion, - scope.toGradleCompileScope(module?.getBuildSystemType() == AndroidGradle) - ) - ) + val dependencyText = getCompileDependencySnippet( + libraryDescriptor.libraryGroupId, + libraryDescriptor.libraryArtifactId, + libraryDescriptor.maxVersion, + scope.toGradleCompileScope(scriptFile.module?.getBuildSystemType() == AndroidGradle) + ) + + if (usesNewMultiplatform()) { + val findOrCreateTargetSourceSet = scriptFile + .getKotlinBlock() + ?.getSourceSetsBlock() + ?.findOrCreateTargetSourceSet(targetModule.name.takeLastWhile { it != '.' }) + val dependenciesBlock = findOrCreateTargetSourceSet?.getDependenciesBlock() + dependenciesBlock?.addExpressionIfMissing(dependencyText) + } else { + scriptFile.getDependenciesBlock()?.addExpressionIfMissing(dependencyText) } } + private fun KtBlockExpression.findOrCreateTargetSourceSet(moduleName: String) = + findTargetSourceSet(moduleName) ?: createTargetSourceSet(moduleName) + + private fun KtBlockExpression.findTargetSourceSet(moduleName: String): KtBlockExpression? = statements.find { + it.isTargetSourceSetDeclaration(moduleName) + }?.getOrCreateBlock() + + private fun KtExpression.getOrCreateBlock(): KtBlockExpression? = when (this) { + is KtCallExpression -> getBlock() ?: addBlock() + is KtReferenceExpression -> replace(KtPsiFactory(project).createExpression("$text {\n}")).cast().getBlock() + is KtProperty -> delegateExpressionOrInitializer?.getOrCreateBlock() + else -> error("Impossible create block for $this") + } + + private fun KtCallExpression.addBlock(): KtBlockExpression? = parent.addAfter( + KtPsiFactory(project).createEmptyBody(), this + ) as? KtBlockExpression + + private fun KtBlockExpression.createTargetSourceSet(moduleName: String) = addExpressionIfMissing("getByName(\"$moduleName\") {\n}") + .cast() + .getBlock() + override fun getKotlinStdlibVersion(): String? = scriptFile.getKotlinStdlibVersion() private fun KtBlockExpression.addCompileStdlibIfMissing(stdlibArtifactName: String): KtCallExpression? = @@ -231,6 +262,7 @@ class KotlinBuildScriptManipulator( private fun KtCallExpression.getBlock(): KtBlockExpression? = (valueArguments.singleOrNull()?.getArgumentExpression() as? KtLambdaExpression)?.bodyExpression + ?: lambdaArguments.lastOrNull()?.getLambdaExpression()?.bodyExpression private fun KtFile.getKotlinStdlibVersion(): String? { return findScriptInitializer("dependencies")?.getBlock()?.let { @@ -262,6 +294,10 @@ class KotlinBuildScriptManipulator( private fun KtFile.getPluginManagementBlock(): KtBlockExpression? = findOrCreateScriptInitializer("pluginManagement", true) + private fun KtFile.getKotlinBlock(): KtBlockExpression? = findOrCreateScriptInitializer("kotlin") + + private fun KtBlockExpression.getSourceSetsBlock(): KtBlockExpression? = findOrCreateBlock("sourceSets") + private fun KtFile.getRepositoriesBlock(): KtBlockExpression? = findOrCreateScriptInitializer("repositories") private fun KtFile.getDependenciesBlock(): KtBlockExpression? = findOrCreateScriptInitializer("dependencies") @@ -289,7 +325,7 @@ class KotlinBuildScriptManipulator( private fun KtFile.changeCoroutineConfiguration(coroutineOption: String): PsiElement? { val snippet = "experimental.coroutines = Coroutines.${coroutineOption.toUpperCase()}" - val kotlinBlock = findOrCreateScriptInitializer("kotlin") ?: return null + val kotlinBlock = getKotlinBlock() ?: return null addImportIfMissing("org.jetbrains.kotlin.gradle.dsl.Coroutines") val statement = kotlinBlock.statements.find { it.text.startsWith("experimental.coroutines") } return if (statement != null) { @@ -306,7 +342,7 @@ class KotlinBuildScriptManipulator( ): PsiElement? { if (usesNewMultiplatform()) { state.assertApplicableInMultiplatform() - return findOrCreateScriptInitializer("kotlin") + return getKotlinBlock() ?.findOrCreateBlock("sourceSets") ?.findOrCreateBlock("all") ?.addExpressionIfMissing("languageSettings.enableLanguageFeature(\"${feature.name}\")") @@ -505,3 +541,11 @@ class KotlinBuildScriptManipulator( } } } + +private fun KtExpression.isTargetSourceSetDeclaration(moduleName: String): Boolean = with(text) { + when (this@isTargetSourceSetDeclaration) { + is KtProperty -> startsWith("val $moduleName by") || initializer?.isTargetSourceSetDeclaration(moduleName) == true + is KtCallExpression -> startsWith("getByName(\"$moduleName\")") + else -> false + } +} diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt index 40e8f7cf07e..6b03a949cf0 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt @@ -324,7 +324,7 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator { return } - getManipulator(buildScript).addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor) + getManipulator(buildScript).addKotlinLibraryToModuleBuildScript(module, scope, libraryDescriptor) buildScript.virtualFile?.let { createConfigureKotlinNotificationCollector(buildScript.project) diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt index ceddfc262ae..cab6d30ae6d 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt @@ -5,6 +5,9 @@ package org.jetbrains.kotlin.idea.codeInsight.gradle +import com.intellij.openapi.module.Module +import com.intellij.openapi.roots.DependencyScope +import com.intellij.openapi.roots.ExternalLibraryDescriptor import com.intellij.testFramework.runInEdtAndWait import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator @@ -77,6 +80,49 @@ class GradleConfiguratorPlatformSpecificTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testAddLibraryMultiplatform() = doTestAddLibrary() + + @TargetVersions("4.7+") + @Test + fun testAddLibraryMultiplatformGSK() = doTestAddLibrary() + + @TargetVersions("4.7+") + @Test + fun testAddLibraryMultiplatformGSK2() = doTestAddLibrary() + + @TargetVersions("4.7+") + @Test + fun testAddLibraryMultiplatformGSK3() = doTestAddLibrary() + + @TargetVersions("4.7+") + @Test + fun testAddLibraryMultiplatformGSK4() = doTestAddLibrary() + + @TargetVersions("4.7+") + @Test + fun testAddLibraryMultiplatformGSK5() = doTestAddLibrary() + + private fun doTestAddLibrary() { + val files = importProjectFromTestData() + + runInEdtAndWait { + myTestFixture.project.executeWriteCommand("") { + KotlinWithGradleConfigurator.addKotlinLibraryToModule( + object : Module by myTestFixture.module { + override fun getName(): String = "jvmMain" + }, + DependencyScope.COMPILE, + object : ExternalLibraryDescriptor("org.jetbrains.kotlin", "kotlin-reflect", "1.3.50", "1.3.50") { + override fun getLibraryClassesRoots() = emptyList() + }) + } + + checkFiles(files) + } + } + override fun testDataDirName(): String { return "configurator" } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index 8e0921a2d88..34aec57cdf8 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -87,12 +87,12 @@ fun isRepositoryConfigured(repositoriesBlockText: String): Boolean = repositoriesBlockText.contains(MAVEN_CENTRAL) || repositoriesBlockText.contains(JCENTER) fun DependencyScope.toGradleCompileScope(isAndroidModule: Boolean) = when (this) { - DependencyScope.COMPILE -> "compile" + DependencyScope.COMPILE -> "implementation" // TODO: We should add testCompile or androidTestCompile - DependencyScope.TEST -> if (isAndroidModule) "compile" else "testCompile" + DependencyScope.TEST -> if (isAndroidModule) "implementation" else "testImplementation" DependencyScope.RUNTIME -> "runtime" - DependencyScope.PROVIDED -> "compile" - else -> "compile" + DependencyScope.PROVIDED -> "implementation" + else -> "implementation" } fun RepositoryDescription.toGroovyRepositorySnippet() = "maven { url '$url' }" diff --git a/idea/testData/gradle/configurator/addLibrary/build.gradle.after b/idea/testData/gradle/configurator/addLibrary/build.gradle.after index 06640684345..a1302986c88 100644 --- a/idea/testData/gradle/configurator/addLibrary/build.gradle.after +++ b/idea/testData/gradle/configurator/addLibrary/build.gradle.after @@ -12,5 +12,5 @@ apply plugin: 'kotlin' dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-1.1.0" - compile "org.jetbrains.kotlin:kotlin-reflect:1.0.0" -} + implementation "org.jetbrains.kotlin:kotlin-reflect:1.0.0" +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.3.5.after b/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.3.5.after index 0307735d7e7..8c19bd760ec 100644 --- a/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.3.5.after +++ b/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.3.5.after @@ -5,5 +5,5 @@ plugins { dependencies { testCompile("junit:junit:4.12") compile(kotlinModule("stdlib-jre8")) - compile(kotlinModule("reflect", "1.0.0")) + implementation(kotlinModule("reflect", "1.0.0")) } diff --git a/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.4.9.after b/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.4.9.after index 507e16e0e66..f2d3cd85581 100644 --- a/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.4.9.after +++ b/idea/testData/gradle/configurator/addLibraryGSK/build.gradle.kts.4.9.after @@ -5,5 +5,5 @@ plugins { dependencies { testCompile("junit:junit:4.12") compile(kotlinModule("stdlib-jre8")) - compile(kotlin("reflect")) + implementation(kotlin("reflect")) } diff --git a/idea/testData/gradle/configurator/addLibraryGSKWithKotlinVersion/build.gradle.kts.after b/idea/testData/gradle/configurator/addLibraryGSKWithKotlinVersion/build.gradle.kts.after index 0b0f3fd9fbb..c5fdbbc555d 100644 --- a/idea/testData/gradle/configurator/addLibraryGSKWithKotlinVersion/build.gradle.kts.after +++ b/idea/testData/gradle/configurator/addLibraryGSKWithKotlinVersion/build.gradle.kts.after @@ -7,5 +7,5 @@ val kotlin_version: String by extra dependencies { testCompile("junit:junit:4.12") compile(kotlinModule("stdlib-jre8", kotlin_version)) - compile(kotlinModule("reflect", kotlin_version)) + implementation(kotlinModule("reflect", kotlin_version)) } diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle b/idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle new file mode 100644 index 00000000000..f33a213b6db --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle @@ -0,0 +1,58 @@ +plugins { + id 'org.jetbrains.kotlin.multiplatform' version '1.3.41' +} + +repositories { + mavenCentral() +} + +group 'com.example' +version '0.0.1' + +apply plugin: 'kotlin-multiplatform' + +kotlin { + jvm() + js() + sourceSets { + commonMain { + dependencies { + implementation kotlin('stdlib-common') + } + } + commonTest { + dependencies { + implementation kotlin('test-common') + implementation kotlin('test-annotations-common') + } + } + project { + dependencies { + implementation kotlin('stdlib-jdk8') + } + } + plainJvm { + dependencies { + jvm() + implementation kotlin('stdlib-jdk8') + } + } + jvmTest { + dependencies { + implementation kotlin('test') + implementation kotlin('test-junit') + } + } + jsMain { + dependencies { + implementation kotlin('stdlib-js') + } + } + jsTest { + dependencies { + implementation kotlin('test-js') + } + } + } +} + diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle.after b/idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle.after new file mode 100644 index 00000000000..bd2a403f30a --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatform/build.gradle.after @@ -0,0 +1,63 @@ +plugins { + id 'org.jetbrains.kotlin.multiplatform' version '1.3.41' +} + +repositories { + mavenCentral() +} + +group 'com.example' +version '0.0.1' + +apply plugin: 'kotlin-multiplatform' + +kotlin { + jvm() + js() + sourceSets { + commonMain { + dependencies { + implementation kotlin('stdlib-common') + } + } + commonTest { + dependencies { + implementation kotlin('test-common') + implementation kotlin('test-annotations-common') + } + } + project { + dependencies { + implementation kotlin('stdlib-jdk8') + } + } + plainJvm { + dependencies { + jvm() + implementation kotlin('stdlib-jdk8') + } + } + jvmTest { + dependencies { + implementation kotlin('test') + implementation kotlin('test-junit') + } + } + jsMain { + dependencies { + implementation kotlin('stdlib-js') + } + } + jsTest { + dependencies { + implementation kotlin('test-js') + } + } + jvmMain { + dependencies { + implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50" + } + } + } +} + diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts new file mode 100644 index 00000000000..6aa1d20f299 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts.after b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts.after new file mode 100644 index 00000000000..edf93a8e23a --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK/build.gradle.kts.after @@ -0,0 +1,26 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + getByName("jvmMain") { + dependencies { + implementation(kotlin("reflect")) + } + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts new file mode 100644 index 00000000000..e24a6b76949 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + getByName("jvmMain") { + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts.after b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts.after new file mode 100644 index 00000000000..edf93a8e23a --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK2/build.gradle.kts.after @@ -0,0 +1,26 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + getByName("jvmMain") { + dependencies { + implementation(kotlin("reflect")) + } + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts new file mode 100644 index 00000000000..8495b68dfd2 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts @@ -0,0 +1,25 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + val jvmMain by getting { + dependencies { + } + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts.after b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts.after new file mode 100644 index 00000000000..b02e7f17459 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK3/build.gradle.kts.after @@ -0,0 +1,26 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + val jvmMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts new file mode 100644 index 00000000000..3ad1d0a7386 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts @@ -0,0 +1,22 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + val jvmMain by getting + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts.after b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts.after new file mode 100644 index 00000000000..b02e7f17459 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK4/build.gradle.kts.after @@ -0,0 +1,26 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + val jvmMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts new file mode 100644 index 00000000000..d02bf7d28d1 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + val jvmMain by getting { + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts.after b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts.after new file mode 100644 index 00000000000..b02e7f17459 --- /dev/null +++ b/idea/testData/gradle/configurator/addLibraryMultiplatformGSK5/build.gradle.kts.after @@ -0,0 +1,26 @@ +plugins { + kotlin("multiplatform") version "1.3.41" +} + +repositories { + mavenCentral() +} + +group = "com.example" +version = "0.0.1" + +kotlin { + sourceSets { + jvm() + val commonMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + val jvmMain by getting { + dependencies { + implementation(kotlin("reflect")) + } + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/addNonKotlinLibraryGSK/build.gradle.kts.after b/idea/testData/gradle/configurator/addNonKotlinLibraryGSK/build.gradle.kts.after index 86457fad79d..3e8b52acaf2 100644 --- a/idea/testData/gradle/configurator/addNonKotlinLibraryGSK/build.gradle.kts.after +++ b/idea/testData/gradle/configurator/addNonKotlinLibraryGSK/build.gradle.kts.after @@ -5,5 +5,5 @@ plugins { dependencies { testCompile("junit:junit:4.12") compile(kotlinModule("stdlib-jre8")) - compile("org.a.b:lib:1.0.0") + implementation("org.a.b:lib:1.0.0") } diff --git a/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.3.5.after b/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.3.5.after index d1b3da8fb6a..7c475da4828 100644 --- a/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.3.5.after +++ b/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.3.5.after @@ -4,6 +4,6 @@ plugins { dependencies { compile(kotlinModule("stdlib-jre8")) - testCompile("junit:junit:4.12") - testCompile(kotlinModule("test", "1.1.2")) + testImplementation("junit:junit:4.12") + testImplementation(kotlinModule("test", "1.1.2")) } diff --git a/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.4.9.after b/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.4.9.after index 2df275eb045..b988da333de 100644 --- a/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.4.9.after +++ b/idea/testData/gradle/configurator/addTestLibraryGSK/build.gradle.kts.4.9.after @@ -4,6 +4,6 @@ plugins { dependencies { compile(kotlinModule("stdlib-jre8")) - testCompile("junit:junit:4.12") - testCompile(kotlin("test")) + testImplementation("junit:junit:4.12") + testImplementation(kotlin("test")) } diff --git a/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle.after b/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle.after index 25b491b228f..cd1e3c81145 100644 --- a/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle.after +++ b/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle.after @@ -18,5 +18,5 @@ repositories { } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0" - compile "org.jetbrains.kotlin:kotlin-reflect:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-reflect:1.1.0" }