Add flag for ct.sym serch
This commit is contained in:
@@ -30,7 +30,8 @@ import java.io.InputStream
|
|||||||
|
|
||||||
class CliVirtualFileFinder(
|
class CliVirtualFileFinder(
|
||||||
private val index: JvmDependenciesIndex,
|
private val index: JvmDependenciesIndex,
|
||||||
private val scope: GlobalSearchScope
|
private val scope: GlobalSearchScope,
|
||||||
|
private val enableSearchInCtSym: Boolean
|
||||||
) : VirtualFileFinder() {
|
) : VirtualFileFinder() {
|
||||||
override fun findVirtualFileWithHeader(classId: ClassId): VirtualFile? =
|
override fun findVirtualFileWithHeader(classId: ClassId): VirtualFile? =
|
||||||
findBinaryOrSigClass(classId)
|
findBinaryOrSigClass(classId)
|
||||||
@@ -70,9 +71,14 @@ class CliVirtualFileFinder(
|
|||||||
dir.findChild(fileName)?.takeIf(VirtualFile::isValid)
|
dir.findChild(fileName)?.takeIf(VirtualFile::isValid)
|
||||||
}?.takeIf { it in scope }
|
}?.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>) =
|
private fun findBinaryOrSigClass(classId: ClassId, simpleName: String, rootType: Set<JavaRoot.RootType>) =
|
||||||
index.findClass(classId, acceptedRootTypes = rootType) { dir, _ ->
|
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 }
|
}?.takeIf { it in scope }
|
||||||
|
|
||||||
private fun findBinaryOrSigClass(classId: ClassId) =
|
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
|
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||||
|
|
||||||
// TODO: create different JvmDependenciesIndex instances for different sets of source roots to improve performance
|
// TODO: create different JvmDependenciesIndex instances for different sets of source roots to improve performance
|
||||||
class CliVirtualFileFinderFactory(private val index: JvmDependenciesIndex) : VirtualFileFinderFactory {
|
class CliVirtualFileFinderFactory(private val index: JvmDependenciesIndex, private val enableSearchInCtSym: Boolean) : VirtualFileFinderFactory {
|
||||||
override fun create(scope: GlobalSearchScope): VirtualFileFinder = CliVirtualFileFinder(index, scope)
|
override fun create(scope: GlobalSearchScope): VirtualFileFinder = CliVirtualFileFinder(index, scope, enableSearchInCtSym)
|
||||||
|
|
||||||
override fun create(project: Project, module: ModuleDescriptor): VirtualFileFinder =
|
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)
|
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(MetadataFinderFactory::class.java, finderFactory)
|
||||||
project.registerService(VirtualFileFinderFactory::class.java, finderFactory)
|
project.registerService(VirtualFileFinderFactory::class.java, finderFactory)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user