Open build tool window on Gradle DSL errors
^EA-236697 Fixed
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
e018f2bd3e
commit
741df42c18
+14
-15
@@ -5,24 +5,23 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
||||
|
||||
import com.intellij.build.BuildContentManager
|
||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
||||
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.JdkUtil
|
||||
import com.intellij.openapi.util.io.FileUtil.toSystemIndependentName
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity
|
||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
||||
import org.jetbrains.kotlin.gradle.BrokenKotlinDslScriptsModel
|
||||
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.getGradleScriptInputsStamp
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
||||
import org.jetbrains.kotlin.idea.util.application.invokeLater
|
||||
import org.jetbrains.plugins.gradle.model.BuildScriptClasspathModel
|
||||
import org.jetbrains.plugins.gradle.service.project.DefaultProjectResolverContext
|
||||
import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
||||
import java.io.File
|
||||
|
||||
|
||||
fun saveGradleBuildEnvironment(resolverCtx: ProjectResolverContext) {
|
||||
val task = resolverCtx.externalSystemTaskId
|
||||
val tasks = KotlinDslSyncListener.instance.tasks
|
||||
@@ -49,14 +48,15 @@ fun processScriptModel(
|
||||
resolverCtx: ProjectResolverContext,
|
||||
model: KotlinDslScriptsModel,
|
||||
projectName: String
|
||||
) {
|
||||
if (model is BrokenKotlinDslScriptsModel) {
|
||||
): Boolean {
|
||||
return if (model is BrokenKotlinDslScriptsModel) {
|
||||
LOG.error(
|
||||
"Couldn't get KotlinDslScriptsModel for $projectName:\n${model.message}\n${model.stackTrace}"
|
||||
)
|
||||
false
|
||||
} else {
|
||||
val task = resolverCtx.externalSystemTaskId
|
||||
val project = task.findProject() ?: return
|
||||
val project = task.findProject() ?: return false
|
||||
val models = model.toListOfScriptModels(project)
|
||||
|
||||
val tasks = KotlinDslSyncListener.instance.tasks
|
||||
@@ -69,17 +69,16 @@ fun processScriptModel(
|
||||
|
||||
val errors = models.collectErrors()
|
||||
if (errors.isNotEmpty()) {
|
||||
if (sync != null) {
|
||||
synchronized(sync) {
|
||||
sync.failed = true
|
||||
sync?.let {
|
||||
synchronized(it) {
|
||||
it.failed = true
|
||||
}
|
||||
}
|
||||
throw IllegalStateException(
|
||||
KotlinIdeaGradleBundle.message("title.kotlin.build.script")
|
||||
+ ":\n"
|
||||
+ errors.joinToString("\n") { it.text + "\n" + it.details }
|
||||
)
|
||||
invokeLater(project.disposed) {
|
||||
BuildContentManager.getInstance(project).orCreateToolWindow.activate(null, false, false)
|
||||
}
|
||||
}
|
||||
errors.isEmpty()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -42,7 +42,9 @@ class KotlinDslScriptModelContributor : ProjectModelContributor {
|
||||
if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) {
|
||||
val model = toolingModelsProvider.getProjectModel(it, KotlinDslScriptsModel::class.java)
|
||||
if (model != null) {
|
||||
processScriptModel(resolverCtx, model, projectIdentifier)
|
||||
if (!processScriptModel(resolverCtx, model, projectIdentifier)) {
|
||||
return@forEach
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user