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 d7492a5702e..c5cdfe71e85 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 @@ -50,8 +50,7 @@ interface GradleBuildScriptManipulator { fun addKotlinLibraryToModuleBuildScript( scope: DependencyScope, - libraryDescriptor: ExternalLibraryDescriptor, - isAndroidModule: Boolean + libraryDescriptor: ExternalLibraryDescriptor ) fun getKotlinStdlibVersion(): String? diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt.173 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt.173 index ddc1c9a24e8..bfb55a775e6 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt.173 +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleBuildScriptManipulator.kt.173 @@ -48,8 +48,7 @@ interface GradleBuildScriptManipulator { fun addKotlinLibraryToModuleBuildScript( scope: DependencyScope, - libraryDescriptor: ExternalLibraryDescriptor, - isAndroidModule: Boolean + libraryDescriptor: ExternalLibraryDescriptor ) fun getKotlinStdlibVersion(): String? 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 234c6237131..24ca07177f6 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 @@ -21,6 +21,7 @@ import com.intellij.openapi.roots.ExternalLibraryDescriptor import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiElement import com.intellij.psi.codeStyle.CodeStyleManager +import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator.Companion.getBuildScriptSettingsPsiFile import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType @@ -28,12 +29,11 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyFile import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrAssignmentExpression import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner -import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator.Companion.getBuildScriptSettingsPsiFile -import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement class GroovyBuildScriptManipulator( override val scriptFile: GroovyFile, @@ -158,12 +158,11 @@ class GroovyBuildScriptManipulator( override fun addKotlinLibraryToModuleBuildScript( scope: DependencyScope, - libraryDescriptor: ExternalLibraryDescriptor, - isAndroidModule: Boolean + libraryDescriptor: ExternalLibraryDescriptor ) { val dependencyString = String.format( "%s \"%s:%s:%s\"", - scope.toGradleCompileScope(isAndroidModule), + scope.toGradleCompileScope(scriptFile.module?.getBuildSystemType() == AndroidGradle), libraryDescriptor.libraryGroupId, libraryDescriptor.libraryArtifactId, libraryDescriptor.maxVersion 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 4d6b4c7dab3..ad6def85ede 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 @@ -116,24 +116,15 @@ class KotlinBuildScriptManipulator( override fun addKotlinLibraryToModuleBuildScript( scope: DependencyScope, - libraryDescriptor: ExternalLibraryDescriptor, - isAndroidModule: Boolean + libraryDescriptor: ExternalLibraryDescriptor ) { - val kotlinLibraryVersion = libraryDescriptor.maxVersion - .takeIf { - !useNewSyntax(if (isAndroidModule) "kotlin-android" else KotlinGradleModuleConfigurator.KOTLIN) - } - .let { - if (it == GSK_KOTLIN_VERSION_PROPERTY_NAME) "\$$it" else it - } - scriptFile.getDependenciesBlock()?.apply { addExpressionIfMissing( getCompileDependencySnippet( libraryDescriptor.libraryGroupId, libraryDescriptor.libraryArtifactId, - scope.toGradleCompileScope(isAndroidModule), - kotlinLibraryVersion + libraryDescriptor.maxVersion, + scope.toGradleCompileScope(module?.getBuildSystemType() == AndroidGradle) ) ) } @@ -358,9 +349,6 @@ class KotlinBuildScriptManipulator( private fun KtBlockExpression.addPluginToClassPathIfMissing(): KtCallExpression? = addExpressionIfMissing(getKotlinGradlePluginClassPathSnippet()) as? KtCallExpression - fun getKotlinGradlePluginClassPathSnippet(): String = - "classpath(${getKotlinModuleDependencySnippet("gradle-plugin", "\$$GSK_KOTLIN_VERSION_PROPERTY_NAME")})" - private fun KtBlockExpression.addBlock(name: String, first: Boolean = false): KtBlockExpression? { return psiFactory.createExpression("$name {\n}") .let { if (first) addAfter(it, null) else add(it) } @@ -444,6 +432,24 @@ class KotlinBuildScriptManipulator( private val PsiElement.psiFactory: KtPsiFactory get() = KtPsiFactory(this) + private fun getCompileDependencySnippet( + groupId: String, + artifactId: String, + version: String?, + compileScope: String = "compile" + ): String { + if (groupId != KOTLIN_GROUP_ID) { + return "$compileScope(\"$groupId:$artifactId:$version\")" + } + + if (useNewSyntax(if (scriptFile.module?.getBuildSystemType() == AndroidGradle) "kotlin-android" else KotlinGradleModuleConfigurator.KOTLIN)) { + return "$compileScope(${getKotlinModuleDependencySnippet(artifactId)})" + } + + val libraryVersion = if (version == GSK_KOTLIN_VERSION_PROPERTY_NAME) "\$$version" else version + return "$compileScope(${getKotlinModuleDependencySnippet(artifactId, libraryVersion)})" + } + companion object { private val STDLIB_ARTIFACT_PREFIX = "org.jetbrains.kotlin:kotlin-stdlib" val GSK_KOTLIN_VERSION_PROPERTY_NAME = "kotlin_version" @@ -459,16 +465,5 @@ class KotlinBuildScriptManipulator( else -> "kotlinModule(\"$moduleName\", ${"\"$version\""})" } } - - fun getCompileDependencySnippet( - groupId: String, - artifactId: String, - compileScope: String = "compile", - version: String? = null - ): String = - if (groupId == KOTLIN_GROUP_ID) - "$compileScope(${Companion.getKotlinModuleDependencySnippet(artifactId, version)})" - else - "$compileScope(\"$groupId:$artifactId:$version\")" } } 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 16cbd7d32af..e84f6eba042 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 @@ -288,8 +288,7 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator { return } - getManipulator(buildScript) - .addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor, module.getBuildSystemType() == AndroidGradle) + getManipulator(buildScript).addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor) buildScript.virtualFile?.let { createConfigureKotlinNotificationCollector(buildScript.project)