From fd4c07f0e69c78a33a00f46fcb78351b3eeb2496 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 18 Oct 2018 14:31:42 +0300 Subject: [PATCH] MPP: Populate BuildScriptClasspathData if it's absent This happens when Java support is not available in the IDE (e.g. in CLion) --- .../KotlinMPPGradleProjectResolver.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt index 5ee6434052e..c86bba9f3d1 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.gradle.* import org.jetbrains.kotlin.idea.configuration.GradlePropertiesFileFacade.Companion.KOTLIN_NOT_IMPORTED_COMMON_SOURCE_SETS_SETTING import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling import org.jetbrains.plugins.gradle.model.* +import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension import org.jetbrains.plugins.gradle.service.project.GradleProjectResolver @@ -60,6 +61,21 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { } } + override fun populateModuleExtraModels(gradleModule: IdeaModule, ideModule: DataNode) { + if (ExternalSystemApiUtil.find(ideModule, BuildScriptClasspathData.KEY) == null) { + val buildScriptClasspathModel = resolverCtx.getExtraProject(gradleModule, BuildScriptClasspathModel::class.java) + val classpathEntries = buildScriptClasspathModel?.classpath?.map { + BuildScriptClasspathData.ClasspathEntry(it.classes, it.sources, it.javadoc) + } ?: emptyList() + val buildScriptClasspathData = BuildScriptClasspathData(GradleConstants.SYSTEM_ID, classpathEntries).also { + it.gradleHomeDir = buildScriptClasspathModel?.gradleHomeDir + } + ideModule.createChild(BuildScriptClasspathData.KEY, buildScriptClasspathData) + } + + super.populateModuleExtraModels(gradleModule, ideModule) + } + override fun populateModuleContentRoots(gradleModule: IdeaModule, ideModule: DataNode) { if (resolverCtx.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) == null) { return super.populateModuleContentRoots(gradleModule, ideModule)