[Analysis API] Add caching of built-in files in `BuiltinsVirtualFileProviderBaseImpl`
diff --git a/analysis/decompiled/decompiler-to-psi/src/org/jetbrains/kotlin/analysis/decompiler/psi/BuiltinsVirtualFileProvider.kt b/analysis/decompiled/decompiler-to-psi/src/org/jetbrains/kotlin/analysis/decompiler/psi/BuiltinsVirtualFileProvider.kt
index ff40d22..698df87 100644
--- a/analysis/decompiled/decompiler-to-psi/src/org/jetbrains/kotlin/analysis/decompiler/psi/BuiltinsVirtualFileProvider.kt
+++ b/analysis/decompiled/decompiler-to-psi/src/org/jetbrains/kotlin/analysis/decompiler/psi/BuiltinsVirtualFileProvider.kt
@@ -39,19 +39,22 @@
}
override fun createBuiltinsScope(project: Project): GlobalSearchScope {
- val builtInFiles = getBuiltinVirtualFiles()
- return GlobalSearchScope.filesScope(project, builtInFiles)
+ return GlobalSearchScope.filesScope(project, builtinVirtualFilesCached)
}
protected abstract fun findVirtualFile(url: URL): VirtualFile?
- override fun getBuiltinVirtualFiles(): Set<VirtualFile> = builtInUrls.mapNotNullTo(mutableSetOf()) { url ->
- val file = findVirtualFile(url)
- if (file == null) {
- logger<BuiltinsVirtualFileProvider>().warn("VirtualFile not found for builtin $url")
+ private val builtinVirtualFilesCached: Set<VirtualFile> by lazy(LazyThreadSafetyMode.PUBLICATION) {
+ builtInUrls.mapNotNullTo(mutableSetOf()) { url ->
+ val file = findVirtualFile(url)
+ if (file == null) {
+ logger<BuiltinsVirtualFileProvider>().warn("VirtualFile not found for builtin $url")
+ }
+ file
}
- file
}
+
+ override fun getBuiltinVirtualFiles(): Set<VirtualFile> = builtinVirtualFilesCached
}
class BuiltinsVirtualFileProviderCliImpl : BuiltinsVirtualFileProviderBaseImpl() {