MPP: Populate BuildScriptClasspathData if it's absent

This happens when Java support is not available in the IDE
(e.g. in CLion)
This commit is contained in:
Alexey Sedunov
2018-10-18 14:31:42 +03:00
parent 839d936918
commit fd4c07f0e6
@@ -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<ModuleData>) {
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<ModuleData>) {
if (resolverCtx.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) == null) {
return super.populateModuleContentRoots(gradleModule, ideModule)