Add flag for ct.sym serch
This commit is contained in:
@@ -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) =
|
||||
|
||||
+3
-3
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user