Use module name from userData to get module info for scratch file

This commit is contained in:
Natalia Selezneva
2018-03-19 14:19:21 +03:00
parent 31266e49d0
commit c1dd86d323
3 changed files with 42 additions and 31 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.idea.caches.project
import com.intellij.ide.scratch.ScratchFileService
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.project.Project
@@ -21,6 +22,7 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.idea.caches.lightClasses.KtLightClassForDecompiledDeclaration
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager
import org.jetbrains.kotlin.idea.core.script.scriptRelatedModuleName
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected
import org.jetbrains.kotlin.idea.util.isKotlinBinary
@@ -230,6 +232,11 @@ private inline fun <T> collectInfosByVirtualFile(
it.toIdeaModuleInfo(project, virtualFile, treatAsLibrarySource)?.let(onOccurrence)
}
if (ScratchFileService.isInScratchRoot(virtualFile)) {
val scratchModule = virtualFile.scriptRelatedModuleName?.let { ModuleManager.getInstance(project).findModuleByName(it) }
onOccurrence(scratchModule?.testSourceInfo() ?: scratchModule?.productionSourceInfo())
}
val scriptDefinition = getScriptDefinition(virtualFile, project)
if (scriptDefinition != null) {
onOccurrence(ScriptModuleInfo(project, virtualFile, scriptDefinition))