Open build tool window on Gradle DSL errors
^EA-236697 Fixed
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
e018f2bd3e
commit
741df42c18
@@ -11,6 +11,7 @@ import com.intellij.openapi.components.ComponentManager
|
||||
import com.intellij.openapi.progress.impl.CancellationCheck
|
||||
import com.intellij.openapi.project.DumbService
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Condition
|
||||
|
||||
fun <T> runReadAction(action: () -> T): T {
|
||||
return ApplicationManager.getApplication().runReadAction<T>(action)
|
||||
@@ -52,6 +53,9 @@ inline fun executeOnPooledThread(crossinline action: () -> Unit) =
|
||||
inline fun invokeLater(crossinline action: () -> Unit) =
|
||||
ApplicationManager.getApplication().invokeLater { action() }
|
||||
|
||||
inline fun invokeLater(expired: Condition<*>, crossinline action: () -> Unit) =
|
||||
ApplicationManager.getApplication().invokeLater({ action() }, expired)
|
||||
|
||||
inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode
|
||||
|
||||
inline fun <reified T : Any> ComponentManager.getServiceSafe(): T =
|
||||
|
||||
+4
@@ -11,6 +11,7 @@ import com.intellij.openapi.components.ComponentManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.annotations.Nls
|
||||
import com.intellij.openapi.project.DumbService
|
||||
import com.intellij.openapi.util.Condition
|
||||
|
||||
fun <T> runReadAction(action: () -> T): T {
|
||||
return ApplicationManager.getApplication().runReadAction<T>(action)
|
||||
@@ -43,6 +44,9 @@ inline fun executeOnPooledThread(crossinline action: () -> Unit) =
|
||||
inline fun invokeLater(crossinline action: () -> Unit) =
|
||||
ApplicationManager.getApplication().invokeLater { action() }
|
||||
|
||||
inline fun invokeLater(expired: Condition<*>, crossinline action: () -> Unit) =
|
||||
ApplicationManager.getApplication().invokeLater({ action() }, expired)
|
||||
|
||||
inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode
|
||||
|
||||
inline fun <reified T : Any> ComponentManager.getServiceSafe(): T =
|
||||
|
||||
+4
@@ -25,6 +25,7 @@ import com.intellij.openapi.progress.ProgressIndicatorProvider
|
||||
import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.DumbService
|
||||
import com.intellij.openapi.util.Condition
|
||||
|
||||
fun <T> runReadAction(action: () -> T): T {
|
||||
return ApplicationManager.getApplication().runReadAction<T>(action)
|
||||
@@ -57,6 +58,9 @@ inline fun executeOnPooledThread(crossinline action: () -> Unit) =
|
||||
inline fun invokeLater(crossinline action: () -> Unit) =
|
||||
ApplicationManager.getApplication().invokeLater { action() }
|
||||
|
||||
inline fun invokeLater(expired: Condition<*>, crossinline action: () -> Unit) =
|
||||
ApplicationManager.getApplication().invokeLater({ action() }, expired)
|
||||
|
||||
inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode
|
||||
|
||||
inline fun <reified T : Any> ComponentManager.getServiceSafe(): T =
|
||||
|
||||
+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