JavaElementFinder: revert to using ContainerUtil.quicksort
Fix comparator contract violated exception Scopes inherited from LibraryScopeBase violate the comparator contract
This commit is contained in:
@@ -24,6 +24,7 @@ import com.intellij.psi.*
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.util.PsiUtilCore
|
||||
import com.intellij.util.SmartList
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.asJava.classes.FakeLightClassForFileOfPackage
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
@@ -185,9 +186,13 @@ class JavaElementFinder(
|
||||
}
|
||||
|
||||
private fun List<PsiClass>.sortByClasspathPreferringNonFakeFiles(searchScope: GlobalSearchScope): List<PsiClass> {
|
||||
return this.sortedWith(byClasspathComparator(searchScope)).sortedBy {
|
||||
val result = this.toMutableList()
|
||||
// NOTE: this comparator might violate the contract depending on the scope passed
|
||||
ContainerUtil.quickSort(result, byClasspathComparator(searchScope))
|
||||
result.sortBy {
|
||||
it is FakeLightClassForFileOfPackage
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user