Use ModuleInfo in VirtualFileFinder to add script dependencies in search scope

Otherwise it prevent to inline functions from those dependencies during scratch compilation
This commit is contained in:
Natalia Selezneva
2018-12-05 09:37:18 +03:00
parent f3c828a17d
commit 254374c619
7 changed files with 40 additions and 3 deletions
@@ -16,10 +16,27 @@
package org.jetbrains.kotlin.idea.vfilefinder
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
import org.jetbrains.kotlin.idea.caches.project.ScriptModuleInfo
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
class IDEVirtualFileFinderFactory : VirtualFileFinderFactory {
override fun create(scope: GlobalSearchScope): VirtualFileFinder = IDEVirtualFileFinder(scope)
override fun create(project: Project, module: ModuleDescriptor): VirtualFileFinder {
val ideaModuleInfo = (module.getCapability(ModuleInfo.Capability) as? IdeaModuleInfo)
val scope = when (ideaModuleInfo) {
is ScriptModuleInfo -> GlobalSearchScope.union(
ideaModuleInfo.dependencies().map { it.contentScope() }.toTypedArray()
)
else -> GlobalSearchScope.allScope(project)
}
return IDEVirtualFileFinder(scope)
}
}