diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScrtiptModelProcessor.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScrtiptModelProcessor.kt index 0e78d56a80f..6f0895ddd98 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScrtiptModelProcessor.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScrtiptModelProcessor.kt @@ -42,7 +42,7 @@ fun processScriptModel( val project = task.findProject() ?: return val models = model.toListOfScriptModels(project) - project.kotlinGradleDslSync[task]?.models?.addAll(models) + project.kotlinGradleDslSync.getOrPut(task) { KotlinDslGradleBuildSync(task) }.models.addAll(models) if (models.containsErrors()) { throw IllegalStateException(KotlinIdeaGradleBundle.message("title.kotlin.build.script")) @@ -102,7 +102,9 @@ private fun KotlinDslScriptsModel.toListOfScriptModels(project: Project): List() val models = mutableListOf() } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt index 66e3fc3f47b..6ce4a2efd0a 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt @@ -13,15 +13,18 @@ import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsContributor class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() { + private val workingDirs = hashMapOf() + override fun onStart(id: ExternalSystemTaskId, workingDir: String?) { if (!isGradleProjectImport(id)) return if (workingDir == null) return gradleState.isSyncInProgress = true + workingDirs[id] = workingDir val project = id.findProject() ?: return - project.kotlinGradleDslSync[id] = KotlinDslGradleBuildSync(workingDir, id) + project.kotlinGradleDslSync[id] = KotlinDslGradleBuildSync(id) } override fun onEnd(id: ExternalSystemTaskId) { @@ -29,6 +32,7 @@ class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() { gradleState.isSyncInProgress = false + val workingDir = workingDirs.remove(id) ?: return val project = id.findProject() ?: return @Suppress("DEPRECATION") @@ -37,6 +41,7 @@ class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() { val sync = project.kotlinGradleDslSync.remove(id) if (sync != null) { // For Gradle 6.0 or higher + sync.workingDir = workingDir saveScriptModels(project, sync) } } @@ -46,6 +51,8 @@ class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() { gradleState.isSyncInProgress = false + workingDirs.remove(id) + val project = id.findProject() ?: return project.kotlinGradleDslSync.remove(id)