From 8bb3c0796d3b2938531bfb49170ad5ecd50ad9d1 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Fri, 19 Jun 2020 16:24:53 +0300 Subject: [PATCH] Add original errors into the IllegalStateException from import of build script models This exception is needed to finish gradle import and avoid importing other models into IDE In most cases this exception is repoted together with Gradle exception from import, but as soon as it it visible in UI we add some clarification which errors are happened --- .../importing/KotlinDslScriptModelProcessor.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelProcessor.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelProcessor.kt index 2698124f9e3..4346f953969 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelProcessor.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelProcessor.kt @@ -63,19 +63,24 @@ fun processScriptModel( } } - if (models.containsErrors()) { + val errors = models.collectErrors() + if (errors.isNotEmpty()) { if (sync != null) { synchronized(sync) { sync.failed = true } } - throw IllegalStateException(KotlinIdeaGradleBundle.message("title.kotlin.build.script")) + throw IllegalStateException( + KotlinIdeaGradleBundle.message("title.kotlin.build.script") + + ":\n" + + errors.joinToString("\n") { it.text + "\n" + it.details } + ) } } } -private fun Collection.containsErrors(): Boolean { - return any { it.messages.any { it.severity == KotlinDslScriptModel.Severity.ERROR } } +private fun Collection.collectErrors(): List { + return this.flatMap { it.messages.filter { it.severity == KotlinDslScriptModel.Severity.ERROR } } } private fun KotlinDslScriptsModel.toListOfScriptModels(project: Project): List =