Filter only valid roots in KotlinScriptDependenciesClassFinder

ClassFinder should return only valid roots,
but in allScriptsDependenciesClassFiles may contain old roots
because they are persistently saved in the storage.
This may cause exception after IDE restart
This commit is contained in:
Natalia Selezneva
2020-06-18 19:16:09 +03:00
parent d119298232
commit 44f6a5adcd
@@ -20,7 +20,7 @@ class KotlinScriptDependenciesClassFinder(
private val project: Project private val project: Project
) : NonClasspathClassFinder(project), KotlinSafeClassFinder { ) : NonClasspathClassFinder(project), KotlinSafeClassFinder {
override fun calcClassRoots(): List<VirtualFile> = ScriptConfigurationManager.getInstance(project) override fun calcClassRoots(): List<VirtualFile> = ScriptConfigurationManager.getInstance(project)
.getAllScriptsDependenciesClassFiles().toList() .getAllScriptsDependenciesClassFiles().filter { it.isValid }.toList()
override fun findClass(qualifiedName: String, scope: GlobalSearchScope): PsiClass? { override fun findClass(qualifiedName: String, scope: GlobalSearchScope): PsiClass? {
tailrec fun findClassInner(parentQualifier: String, inners: List<String> = emptyList()): PsiClass? { tailrec fun findClassInner(parentQualifier: String, inners: List<String> = emptyList()): PsiClass? {