From 6026a96349d6424c5be131cdb1a5882653041a3b Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 8 Nov 2021 12:16:03 +0100 Subject: [PATCH] Add flag for ct.sym serch --- .../kotlin/cli/jvm/compiler/CliVirtualFileFinder.kt | 10 ++++++++-- .../cli/jvm/compiler/CliVirtualFileFinderFactory.kt | 6 +++--- .../kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.kt index 6035f6ab1e6..08e716698f9 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.kt @@ -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) = 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) = diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinderFactory.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinderFactory.kt index 5ca920f16c6..655f50cf4f9 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinderFactory.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinderFactory.kt @@ -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) } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index 92877f1e09d..2eae9960f0b 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -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)