Refactoring: remove unused class
This commit is contained in:
@@ -23,12 +23,6 @@ import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
||||
import java.io.File
|
||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||
|
||||
class ScriptModuleSearchScope(val scriptFile: VirtualFile, baseScope: GlobalSearchScope) : DelegatingGlobalSearchScope(baseScope) {
|
||||
override fun equals(other: Any?) = other is ScriptModuleSearchScope && scriptFile == other.scriptFile && super.equals(other)
|
||||
|
||||
override fun hashCode() = scriptFile.hashCode() * 73 * super.hashCode()
|
||||
}
|
||||
|
||||
data class ScriptModuleInfo(
|
||||
val project: Project,
|
||||
val scriptFile: VirtualFile,
|
||||
|
||||
+7
-36
@@ -18,15 +18,11 @@ package org.jetbrains.kotlin.idea.core.script
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
import com.intellij.openapi.roots.impl.PackageDirectoryCache
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.NonClasspathClassFinder
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.search.EverythingGlobalScope
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.util.containers.ConcurrentFactoryMap
|
||||
import org.jetbrains.kotlin.idea.caches.project.ScriptModuleSearchScope
|
||||
import org.jetbrains.kotlin.load.java.AbstractJavaClassFinder
|
||||
import org.jetbrains.kotlin.resolve.jvm.KotlinSafeClassFinder
|
||||
|
||||
|
||||
@@ -35,27 +31,8 @@ class KotlinScriptDependenciesClassFinder(
|
||||
private val scriptDependenciesManager: ScriptDependenciesManager
|
||||
) : NonClasspathClassFinder(project), KotlinSafeClassFinder {
|
||||
|
||||
private val myCaches by lazy {
|
||||
ConcurrentFactoryMap.createMap<VirtualFile, PackageDirectoryCache> { file ->
|
||||
val scriptClasspath = scriptDependenciesManager.getScriptClasspath(file)
|
||||
createCache(scriptClasspath)
|
||||
}
|
||||
}
|
||||
|
||||
override fun calcClassRoots(): List<VirtualFile> = scriptDependenciesManager.getAllScriptsClasspath().toList()
|
||||
|
||||
override fun getCache(scope: GlobalSearchScope?): PackageDirectoryCache =
|
||||
(scope as? ScriptModuleSearchScope
|
||||
?: (scope as? AbstractJavaClassFinder.FilterOutKotlinSourceFilesScope)?.base as? ScriptModuleSearchScope
|
||||
)?.let {
|
||||
myCaches[it.scriptFile]
|
||||
} ?: super.getCache(scope)
|
||||
|
||||
override fun clearCache() {
|
||||
super.clearCache()
|
||||
myCaches.clear()
|
||||
}
|
||||
|
||||
override fun findClass(qualifiedName: String, scope: GlobalSearchScope): PsiClass? {
|
||||
tailrec fun findClassInner(parentQualifier: String, inners: List<String> = emptyList()): PsiClass? {
|
||||
if (parentQualifier.isEmpty()) return null
|
||||
@@ -75,20 +52,14 @@ class KotlinScriptDependenciesClassFinder(
|
||||
}
|
||||
|
||||
return findClassInner(qualifiedName)?.let { aClass ->
|
||||
when {
|
||||
scope is ScriptModuleSearchScope ||
|
||||
(scope as? AbstractJavaClassFinder.FilterOutKotlinSourceFilesScope)?.base is ScriptModuleSearchScope ||
|
||||
scope is EverythingGlobalScope ||
|
||||
aClass.containingFile?.virtualFile.let { file ->
|
||||
file != null &&
|
||||
with(ProjectFileIndex.SERVICE.getInstance(myProject)) {
|
||||
!isInContent(file) &&
|
||||
!isInLibraryClasses(file) &&
|
||||
!isInLibrarySource(file)
|
||||
}
|
||||
} -> aClass
|
||||
else -> null
|
||||
if (scope is EverythingGlobalScope) return aClass
|
||||
|
||||
val file = aClass.containingFile?.virtualFile ?: return null
|
||||
val index = ProjectFileIndex.SERVICE.getInstance(myProject)
|
||||
if (index.isInContent(file) || index.isInLibraryClasses(file) || index.isInLibrarySource(file)) {
|
||||
return null
|
||||
}
|
||||
return aClass
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user