[FIR IDE] Fix invalid designation collecting for local classes
This commit is contained in:
committed by
TeamCityServer
parent
207bad5d5f
commit
d34c23914a
+5
-3
@@ -43,12 +43,14 @@ open class FirDeclarationDesignation<out T : FirDeclaration>(
|
||||
}
|
||||
}
|
||||
|
||||
private fun collectDesignationAndIsLocal(declaration: FirDeclaration): Pair<List<FirDeclaration>, Boolean> {
|
||||
val firProvider = declaration.moduleData.session.firProvider
|
||||
private fun FirClassLikeDeclaration<*>.containingClass(): FirClassLikeDeclaration<*>? =
|
||||
if (isLocal) (this as? FirRegularClass)?.containingClassForLocal()?.toFirRegularClass(moduleData.session)
|
||||
else symbol.classId.outerClassId?.let(moduleData.session.firProvider::getFirClassifierByFqName)
|
||||
|
||||
private fun collectDesignationAndIsLocal(declaration: FirDeclaration): Pair<List<FirDeclaration>, Boolean> {
|
||||
val containingClass = when (declaration) {
|
||||
is FirCallableDeclaration<*> -> declaration.containingClass()?.toFirRegularClass(declaration.moduleData.session)
|
||||
is FirClassLikeDeclaration<*> -> declaration.symbol.classId.outerClassId?.let(firProvider::getFirClassifierByFqName)
|
||||
is FirClassLikeDeclaration<*> -> declaration.containingClass()
|
||||
else -> error("Invalid declaration ${declaration.renderWithType()}")
|
||||
} ?: return emptyList<FirDeclaration>() to false
|
||||
|
||||
|
||||
+1
@@ -34,6 +34,7 @@ internal class FirProviderHelper(
|
||||
private val packageExistenceChecker: PackageExistenceChecker,
|
||||
) {
|
||||
fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration<*>? {
|
||||
if (classId.isLocal) return null
|
||||
return executeOrReturnDefaultValueOnPCE(null) {
|
||||
cache.classifierByClassId.computeIfAbsent(classId) {
|
||||
val ktClass = when (val klass = indexHelper.classFromIndexByClassId(classId)) {
|
||||
|
||||
Reference in New Issue
Block a user