From 350abbe8cdaa51515d89c72ebd6007e8435ae2f3 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 14 Jul 2016 17:02:16 +0300 Subject: [PATCH] KotlinScriptConfigurationManager, minor: Extract utility to get transform list of file to vfs roots --- .../KotlinScriptConfigurationManager.kt | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt index 633a2f0db09..e63f76b5a3c 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt @@ -73,11 +73,11 @@ class KotlinScriptConfigurationManager( private val cacheLock = ReentrantReadWriteLock() private val allScriptsClasspathCache = ClearableLazyValue(cacheLock) { - scriptExternalImportsProvider.getKnownCombinedClasspath().distinct().mapNotNull { it.classpathEntryToVfs() } + toVfsRoots(scriptExternalImportsProvider.getKnownCombinedClasspath().distinct()) } private val allLibrarySourcesCache = ClearableLazyValue(cacheLock) { - scriptExternalImportsProvider.getKnownSourceRoots().distinct().mapNotNull { it.classpathEntryToVfs() } + toVfsRoots(scriptExternalImportsProvider.getKnownSourceRoots().distinct()) } private fun notifyRootsChanged() { @@ -86,24 +86,14 @@ class KotlinScriptConfigurationManager( } } - fun getScriptClasspath(file: VirtualFile): List = - scriptExternalImportsProvider.getExternalImports(file)?.classpath?.mapNotNull { it.classpathEntryToVfs() } ?: emptyList() + fun getScriptClasspath(file: VirtualFile): List = toVfsRoots( + scriptExternalImportsProvider.getExternalImports(file)?.classpath ?: emptyList() + ) fun getAllScriptsClasspath(): List = allScriptsClasspathCache.get() fun getAllLibrarySources(): List = allLibrarySourcesCache.get() - private fun File.classpathEntryToVfs(): VirtualFile? { - val res = when { - !exists() -> null - isDirectory -> StandardFileSystems.local()?.findFileByPath(this.canonicalPath) ?: null - isFile -> StandardFileSystems.jar()?.findFileByPath(this.canonicalPath + URLUtil.JAR_SEPARATOR) ?: null - else -> null - } - // TODO: report this somewhere, but do not throw: assert(res != null, { "Invalid classpath entry '$this': exists: ${exists()}, is directory: $isDirectory, is file: $isFile" }) - return res - } - fun getAllScriptsClasspathScope() = NonClasspathDirectoriesScope(getAllScriptsClasspath()) fun getAllLibrarySourcesScope() = NonClasspathDirectoriesScope(getAllLibrarySources()) @@ -145,6 +135,21 @@ class KotlinScriptConfigurationManager( @JvmStatic fun getInstance(project: Project): KotlinScriptConfigurationManager = ServiceManager.getService(project, KotlinScriptConfigurationManager::class.java) + + fun toVfsRoots(roots: Iterable): List { + return roots.mapNotNull { it.classpathEntryToVfs() } + } + + private fun File.classpathEntryToVfs(): VirtualFile? { + val res = when { + !exists() -> null + isDirectory -> StandardFileSystems.local()?.findFileByPath(this.canonicalPath) ?: null + isFile -> StandardFileSystems.jar()?.findFileByPath(this.canonicalPath + URLUtil.JAR_SEPARATOR) ?: null + else -> null + } + // TODO: report this somewhere, but do not throw: assert(res != null, { "Invalid classpath entry '$this': exists: ${exists()}, is directory: $isDirectory, is file: $isFile" }) + return res + } } }