Add flag for ct.sym serch

This commit is contained in:
Mikhael Bogdanov
2021-11-08 12:16:03 +01:00
committed by Space
parent 22b3688493
commit 6026a96349
3 changed files with 12 additions and 6 deletions
@@ -30,7 +30,8 @@ import java.io.InputStream
class CliVirtualFileFinder(
private val index: JvmDependenciesIndex,
private val scope: GlobalSearchScope
private val scope: GlobalSearchScope,
private val enableSearchInCtSym: Boolean
) : VirtualFileFinder() {
override fun findVirtualFileWithHeader(classId: ClassId): VirtualFile? =
findBinaryOrSigClass(classId)
@@ -70,9 +71,14 @@ class CliVirtualFileFinder(
dir.findChild(fileName)?.takeIf(VirtualFile::isValid)
}?.takeIf { it in scope }
private fun findSigFileIfEnabled(
dir: VirtualFile,
simpleName: String
) = if (enableSearchInCtSym) dir.findChild("$simpleName.sig") else null
private fun findBinaryOrSigClass(classId: ClassId, simpleName: String, rootType: Set<JavaRoot.RootType>) =
index.findClass(classId, acceptedRootTypes = rootType) { dir, _ ->
(dir.findChild("$simpleName.class") ?: dir.findChild("$simpleName.sig"))?.takeIf(VirtualFile::isValid)
(dir.findChild("$simpleName.class") ?: findSigFileIfEnabled(dir, simpleName))?.takeIf(VirtualFile::isValid)
}?.takeIf { it in scope }
private fun findBinaryOrSigClass(classId: ClassId) =
@@ -24,9 +24,9 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
// TODO: create different JvmDependenciesIndex instances for different sets of source roots to improve performance
class CliVirtualFileFinderFactory(private val index: JvmDependenciesIndex) : VirtualFileFinderFactory {
override fun create(scope: GlobalSearchScope): VirtualFileFinder = CliVirtualFileFinder(index, scope)
class CliVirtualFileFinderFactory(private val index: JvmDependenciesIndex, private val enableSearchInCtSym: Boolean) : VirtualFileFinderFactory {
override fun create(scope: GlobalSearchScope): VirtualFileFinder = CliVirtualFileFinder(index, scope, enableSearchInCtSym)
override fun create(project: Project, module: ModuleDescriptor): VirtualFileFinder =
CliVirtualFileFinder(index, GlobalSearchScope.allScope(project))
CliVirtualFileFinder(index, GlobalSearchScope.allScope(project), enableSearchInCtSym)
}
@@ -288,7 +288,7 @@ class KotlinCoreEnvironment private constructor(
CliJavaModuleResolver(classpathRootsResolver.javaModuleGraph, javaModules, javaModuleFinder.systemModules.toList(), project)
)
val finderFactory = CliVirtualFileFinderFactory(rootsIndex)
val finderFactory = CliVirtualFileFinderFactory(rootsIndex, releaseTarget != 0)
project.registerService(MetadataFinderFactory::class.java, finderFactory)
project.registerService(VirtualFileFinderFactory::class.java, finderFactory)