diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleBuildScriptsResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleBuildScriptsResolver.kt index cfce32358d9..571ba19f927 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleBuildScriptsResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleBuildScriptsResolver.kt @@ -7,41 +7,15 @@ package org.jetbrains.kotlin.idea.configuration import com.intellij.openapi.externalSystem.model.DataNode import com.intellij.openapi.externalSystem.model.project.ProjectData -import com.intellij.openapi.util.Key import com.intellij.openapi.util.Pair import com.intellij.util.Consumer import org.gradle.tooling.model.idea.IdeaProject -import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.* import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty import org.jetbrains.plugins.gradle.model.ProjectImportExtraModelProvider import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension -data class GradleKotlinBuildScriptData( - val file: String, - val classPath: List, - val sourcePath: List, - val imports: List, - val messages: List -) { - data class Message( - val severity: Severity, - val text: String, - val position: Position? = null - ) - - data class Position(val line: Int, val column: Int) - - enum class Severity { WARNING, ERROR } -} - -var DataNode.gradleKotlinBuildScripts - by NotNullableCopyableDataNodeUserDataProperty( - Key.create>("GRADLE_KOTLIN_BUILD_SCRIPTS"), - emptyList() - ) - class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() { override fun getExtraProjectModelClasses(): Set> { return setOf(KotlinDslScriptsModel::class.java) @@ -74,37 +48,4 @@ class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() { } override fun requiresTaskRunning() = true - - fun copy(model: KotlinDslScriptsModel): List { - return model.scriptModels.map { (file, model) -> - val messages = mutableListOf() - - model.exceptions.forEach { - messages.add( - GradleKotlinBuildScriptData.Message(GradleKotlinBuildScriptData.Severity.ERROR, it) - ) - } - - model.editorReports.forEach { - messages.add(GradleKotlinBuildScriptData.Message( - when (it.severity) { - EditorReportSeverity.WARNING -> GradleKotlinBuildScriptData.Severity.WARNING - else -> GradleKotlinBuildScriptData.Severity.ERROR - }, - it.message, - it.position?.let { position -> - GradleKotlinBuildScriptData.Position(position.line, position.column) - } - )) - } - - GradleKotlinBuildScriptData( - file.absolutePath, - model.classPath.map { it.absolutePath }, - model.sourcePath.map { it.absolutePath }, - model.implicitImports, - messages - ) - } - } } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/buildScriptsResolverUtils.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/buildScriptsResolverUtils.kt new file mode 100644 index 00000000000..208a9b83409 --- /dev/null +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/buildScriptsResolverUtils.kt @@ -0,0 +1,74 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.configuration + +import com.intellij.openapi.externalSystem.model.DataNode +import com.intellij.openapi.externalSystem.model.project.ProjectData +import com.intellij.openapi.util.Key +import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity +import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel +import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty + + +var DataNode.gradleKotlinBuildScripts + by NotNullableCopyableDataNodeUserDataProperty( + Key.create>( + "GRADLE_KOTLIN_BUILD_SCRIPTS" + ), + emptyList() + ) + +data class GradleKotlinBuildScriptData( + val file: String, + val classPath: List, + val sourcePath: List, + val imports: List, + val messages: List +) { + data class Message( + val severity: Severity, + val text: String, + val position: Position? = null + ) + + data class Position(val line: Int, val column: Int) + + enum class Severity { WARNING, ERROR } +} + +@Suppress("unused") +fun KotlinGradleBuildScriptsResolver.copy(model: KotlinDslScriptsModel): List { + return model.scriptModels.map { (file, model) -> + val messages = mutableListOf() + + model.exceptions.forEach { + messages.add( + GradleKotlinBuildScriptData.Message(GradleKotlinBuildScriptData.Severity.ERROR, it) + ) + } + + model.editorReports.forEach { + messages.add(GradleKotlinBuildScriptData.Message( + when (it.severity) { + EditorReportSeverity.WARNING -> GradleKotlinBuildScriptData.Severity.WARNING + else -> GradleKotlinBuildScriptData.Severity.ERROR + }, + it.message, + it.position?.let { position -> + GradleKotlinBuildScriptData.Position(position.line, position.column) + } + )) + } + + GradleKotlinBuildScriptData( + file.absolutePath, + model.classPath.map { it.absolutePath }, + model.sourcePath.map { it.absolutePath }, + model.implicitImports, + messages + ) + } +} \ No newline at end of file