gradle.kts: script models should be imported in ProjectData key, not in GradleSourceSetData

Or it will be fail if there is no source sets (see org.jetbrains.kotlin.idea.codeInsight.gradle.GradleKtsImportTest.testEmpty for reproduction)
This commit is contained in:
Sergey Rostov
2019-12-04 15:05:41 +03:00
parent fd16078a34
commit dcd67d79f4
@@ -40,18 +40,18 @@ import kotlin.script.experimental.jvm.JvmDependency
import kotlin.script.experimental.jvm.jdkHome import kotlin.script.experimental.jvm.jdkHome
import kotlin.script.experimental.jvm.jvm import kotlin.script.experimental.jvm.jvm
class KotlinGradleBuildScriptsDataService : AbstractProjectDataService<GradleSourceSetData, Void>() { class KotlinGradleBuildScriptsDataService : AbstractProjectDataService<ProjectData, Void>() {
override fun getTargetDataKey(): Key<GradleSourceSetData> = GradleSourceSetData.KEY override fun getTargetDataKey(): Key<ProjectData> = ProjectKeys.PROJECT
override fun onSuccessImport( override fun onSuccessImport(
imported: MutableCollection<DataNode<GradleSourceSetData>>, imported: MutableCollection<DataNode<ProjectData>>,
projectData: ProjectData?, projectData: ProjectData?,
project: Project, project: Project,
modelsProvider: IdeModelsProvider modelsProvider: IdeModelsProvider
) { ) {
super.onSuccessImport(imported, projectData, project, modelsProvider) super.onSuccessImport(imported, projectData, project, modelsProvider)
val projectDataNode = imported.firstNotNullResult { ExternalSystemApiUtil.findParent(it, ProjectKeys.PROJECT) } ?: return val projectDataNode = imported.singleOrNull() ?: return
val buildScripts = projectDataNode.gradleKotlinBuildScripts ?: return val buildScripts = projectDataNode.gradleKotlinBuildScripts ?: return
val gradleSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) val gradleSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID)