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:
+16
@@ -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.configuration.GradlePropertiesFileFacade.Companion.KOTLIN_NOT_IMPORTED_COMMON_SOURCE_SETS_SETTING
|
||||||
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
||||||
import org.jetbrains.plugins.gradle.model.*
|
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.model.data.GradleSourceSetData
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||||
import org.jetbrains.plugins.gradle.service.project.GradleProjectResolver
|
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>) {
|
override fun populateModuleContentRoots(gradleModule: IdeaModule, ideModule: DataNode<ModuleData>) {
|
||||||
if (resolverCtx.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) == null) {
|
if (resolverCtx.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) == null) {
|
||||||
return super.populateModuleContentRoots(gradleModule, ideModule)
|
return super.populateModuleContentRoots(gradleModule, ideModule)
|
||||||
|
|||||||
Reference in New Issue
Block a user