Scripting: configurations from gradle import should be always taken into account (KT-34442)

Do not rely on registry option
^KT-34442
This commit is contained in:
Natalia Selezneva
2019-11-20 12:28:13 +03:00
parent 2f1915d85e
commit 7ade2ec576
3 changed files with 22 additions and 22 deletions
@@ -12,8 +12,8 @@ import com.intellij.util.Consumer
import org.gradle.tooling.model.idea.IdeaProject import org.gradle.tooling.model.idea.IdeaProject
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.* import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.*
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported
import org.jetbrains.kotlin.idea.scripting.gradle.minimal_gradle_version_supported import org.jetbrains.kotlin.idea.scripting.gradle.minimal_gradle_version_supported
import org.jetbrains.kotlin.idea.scripting.gradle.shouldLoadDependenciesDuringImport
import org.jetbrains.plugins.gradle.model.ProjectImportExtraModelProvider import org.jetbrains.plugins.gradle.model.ProjectImportExtraModelProvider
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
@@ -32,11 +32,9 @@ class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
} }
override fun enhanceTaskProcessing(taskNames: MutableList<String>, jvmParametersSetup: String?, initScriptConsumer: Consumer<String>) { override fun enhanceTaskProcessing(taskNames: MutableList<String>, jvmParametersSetup: String?, initScriptConsumer: Consumer<String>) {
if (shouldLoadDependenciesDuringImport()) { initScriptConsumer.consume(
initScriptConsumer.consume( "if (org.gradle.util.GradleVersion.current() >= org.gradle.util.GradleVersion.version(\"$minimal_gradle_version_supported\")) startParameter.taskNames += [\"${PREPARATION_TASK_NAME}\"]"
"if (org.gradle.util.GradleVersion.current() >= org.gradle.util.GradleVersion.version(\"$minimal_gradle_version_supported\")) startParameter.taskNames += [\"${PREPARATION_TASK_NAME}\"]" )
)
}
} }
override fun getExtraModelProvider(): ProjectImportExtraModelProvider { override fun getExtraModelProvider(): ProjectImportExtraModelProvider {
@@ -46,9 +44,11 @@ class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
override fun populateProjectExtraModels(gradleProject: IdeaProject, ideProject: DataNode<ProjectData>) { override fun populateProjectExtraModels(gradleProject: IdeaProject, ideProject: DataNode<ProjectData>) {
super.populateProjectExtraModels(gradleProject, ideProject) super.populateProjectExtraModels(gradleProject, ideProject)
resolverCtx.getExtraProject(null, KotlinDslScriptsModel::class.java)?.let { model -> if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) {
// we need a copy to avoid memory leak, as model is java rmi proxy object resolverCtx.getExtraProject(null, KotlinDslScriptsModel::class.java)?.let { model ->
ideProject.gradleKotlinBuildScripts = copy(model) // we need a copy to avoid memory leak, as model is java rmi proxy object
ideProject.gradleKotlinBuildScripts = copy(model)
}
} }
} }
@@ -12,8 +12,8 @@ import com.intellij.util.Consumer
import org.gradle.tooling.model.idea.IdeaProject import org.gradle.tooling.model.idea.IdeaProject
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.* import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.*
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported
import org.jetbrains.kotlin.idea.scripting.gradle.minimal_gradle_version_supported import org.jetbrains.kotlin.idea.scripting.gradle.minimal_gradle_version_supported
import org.jetbrains.kotlin.idea.scripting.gradle.shouldLoadDependenciesDuringImport
import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
@@ -32,11 +32,9 @@ class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
} }
override fun enhanceTaskProcessing(taskNames: MutableList<String>, jvmParametersSetup: String?, initScriptConsumer: Consumer<String>) { override fun enhanceTaskProcessing(taskNames: MutableList<String>, jvmParametersSetup: String?, initScriptConsumer: Consumer<String>) {
if (shouldLoadDependenciesDuringImport()) { initScriptConsumer.consume(
initScriptConsumer.consume( "if (org.gradle.util.GradleVersion.current() >= org.gradle.util.GradleVersion.version(\"$minimal_gradle_version_supported\")) startParameter.taskNames += [\"${PREPARATION_TASK_NAME}\"]"
"if (org.gradle.util.GradleVersion.current() >= org.gradle.util.GradleVersion.version(\"$minimal_gradle_version_supported\")) startParameter.taskNames += [\"${PREPARATION_TASK_NAME}\"]" )
)
}
} }
override fun getModelProvider(): ProjectImportModelProvider { override fun getModelProvider(): ProjectImportModelProvider {
@@ -46,9 +44,11 @@ class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
override fun populateProjectExtraModels(gradleProject: IdeaProject, ideProject: DataNode<ProjectData>) { override fun populateProjectExtraModels(gradleProject: IdeaProject, ideProject: DataNode<ProjectData>) {
super.populateProjectExtraModels(gradleProject, ideProject) super.populateProjectExtraModels(gradleProject, ideProject)
resolverCtx.getExtraProject(null, KotlinDslScriptsModel::class.java)?.let { model -> if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) {
// we need a copy to avoid memory leak, as model is java rmi proxy object resolverCtx.getExtraProject(null, KotlinDslScriptsModel::class.java)?.let { model ->
ideProject.gradleKotlinBuildScripts = copy(model) // we need a copy to avoid memory leak, as model is java rmi proxy object
ideProject.gradleKotlinBuildScripts = copy(model)
}
} }
} }
@@ -6,13 +6,13 @@
package org.jetbrains.kotlin.idea.scripting.gradle package org.jetbrains.kotlin.idea.scripting.gradle
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.util.registry.Registry
import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.PsiManager import com.intellij.psi.PsiManager
import com.intellij.psi.PsiRecursiveElementVisitor import com.intellij.psi.PsiRecursiveElementVisitor
import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.PsiWhiteSpace
import com.intellij.psi.impl.source.tree.LeafPsiElement import com.intellij.psi.impl.source.tree.LeafPsiElement
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.KtCallExpression import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
@@ -61,6 +61,6 @@ fun getGradleScriptInputsStamp(
const val minimal_gradle_version_supported = "6.0" const val minimal_gradle_version_supported = "6.0"
fun shouldLoadDependenciesDuringImport(): Boolean { fun kotlinDslScriptsModelImportSupported(currentGradleVersion: String): Boolean {
return Registry.`is`("kotlin.gradle.scripts.useIdeaProjectImport", false) return GradleVersion.version(currentGradleVersion) >= GradleVersion.version(minimal_gradle_version_supported)
} }