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.search.GlobalSearchScope
|
||||||
import com.intellij.psi.util.PsiUtilCore
|
import com.intellij.psi.util.PsiUtilCore
|
||||||
import com.intellij.util.SmartList
|
import com.intellij.util.SmartList
|
||||||
|
import com.intellij.util.containers.ContainerUtil
|
||||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||||
import org.jetbrains.kotlin.asJava.classes.FakeLightClassForFileOfPackage
|
import org.jetbrains.kotlin.asJava.classes.FakeLightClassForFileOfPackage
|
||||||
import org.jetbrains.kotlin.asJava.toLightClass
|
import org.jetbrains.kotlin.asJava.toLightClass
|
||||||
@@ -185,9 +186,13 @@ class JavaElementFinder(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun List<PsiClass>.sortByClasspathPreferringNonFakeFiles(searchScope: GlobalSearchScope): List<PsiClass> {
|
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
|
it is FakeLightClassForFileOfPackage
|
||||||
}
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user