Refactoring: remove unused class

This commit is contained in:
Natalia Selezneva
2019-04-10 15:05:43 +03:00
parent 0da6d48d5e
commit 2844d48f9f
2 changed files with 7 additions and 42 deletions
@@ -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,
@@ -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
}
}
}