[resolution] KotlinJavaPsiFacade: do not return classes with wrong ClassId

We shouldn't return from `findClass`/`findClasses` Java classes with
`ClassId` different from the requested one

^KT-62892
This commit is contained in:
Dmitrii Gridin
2024-01-03 20:08:43 +01:00
committed by Space Team
parent c6004874c1
commit 37ccf5d4f3
4 changed files with 29 additions and 32 deletions
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.load.java.JavaClassFinder
import org.jetbrains.kotlin.load.java.createJavaClassFinder
import org.jetbrains.kotlin.load.java.structure.classId
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -60,10 +60,7 @@ internal class LLFirCombinedJavaSymbolProvider private constructor(
classCache.get(classId) { computeClassLikeSymbolByClassId(it) }
private fun computeClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? {
val javaClasses = javaClassFinder.findClasses(classId).filterNot { javaClass ->
javaClass.classId != classId || javaClass.hasMetadataAnnotation()
}
val javaClasses = javaClassFinder.findClasses(classId).filterNot(JavaClass::hasMetadataAnnotation)
if (javaClasses.isEmpty()) return null
val (javaClass, provider) = selectFirstElementInClasspathOrder(javaClasses) { javaClass ->