From 5246b8a9261e879602730338478f9d34456200db Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 8 Jul 2016 20:27:47 +0300 Subject: [PATCH] Fix getting external path for retrieving gradle model --- .../gradle/KotlinGradleInspectionVisitor.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleInspectionVisitor.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleInspectionVisitor.kt index 39ab36dbc38..0c621615e1f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleInspectionVisitor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleInspectionVisitor.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.externalSystem.model.DataNode import com.intellij.openapi.externalSystem.model.Key import com.intellij.openapi.externalSystem.model.ProjectKeys +import com.intellij.openapi.externalSystem.model.project.ProjectData import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.externalSystem.util.ExternalSystemUtil import com.intellij.openapi.roots.ProjectRootManager @@ -54,12 +55,8 @@ abstract class KotlinGradleInspectionVisitor : BaseInspectionVisitor() { } fun getResolvedKotlinGradleVersion(file: PsiFile): String? { - val project = file.project val module = ProjectRootManager.getInstance(file.project).fileIndex.getModuleForFile(file.virtualFile) ?: return null - val projectPath = project.basePath ?: return null - - val projectInfo = ExternalSystemUtil.getExternalProjectInfo(project, GRADLE_SYSTEM_ID, projectPath) ?: return null - val projectStructureNode = projectInfo.externalProjectStructure ?: return null + val projectStructureNode = findGradleProjectStructure(file) ?: return null for (moduleData in projectStructureNode.findAll(ProjectKeys.MODULE).filter { it.data.internalName == module.name }) { val buildScriptClasspathData = moduleData.node.findAll(BuildScriptClasspathData.KEY).firstOrNull()?.data ?: continue @@ -98,3 +95,11 @@ fun DataNode<*>.findAll(key: Key): List> { } } +fun findGradleProjectStructure(file: PsiFile): DataNode? { + val project = file.project + val module = ProjectRootManager.getInstance(project).fileIndex.getModuleForFile(file.virtualFile) ?: return null + val externalProjectPath = ExternalSystemApiUtil.getExternalProjectPath(module) ?: return null + + val projectInfo = ExternalSystemUtil.getExternalProjectInfo(project, GRADLE_SYSTEM_ID, externalProjectPath) ?: return null + return projectInfo.externalProjectStructure +}