[LL FIR] FirDesignation: add workaround for LLFirLibraryOrLibrarySourceResolvableModuleSession

^KTIJ-24326
This commit is contained in:
Dmitrii Gridin
2023-02-21 16:20:45 +01:00
committed by Space Team
parent 473a2dc87c
commit 7e36a88b82
@@ -1,15 +1,12 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.low.level.api.fir.api
import org.jetbrains.kotlin.KtRealPsiSourceElement
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.nullableJavaSymbolProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirResolvableSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryOrLibrarySourceResolvableModuleSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getContainingFile
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry
@@ -24,11 +21,10 @@ import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
import org.jetbrains.kotlin.fir.diagnostics.ConeDestructuringDeclarationsOnTopLevel
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.parents
class FirDesignationWithFile(
path: List<FirRegularClass>,
@@ -118,9 +114,13 @@ private fun collectDesignationPathWithContainingClass(target: FirDeclaration, co
val useSiteSession = getTargetSession(target)
fun resolveChunk(classId: ClassId): FirRegularClass {
val declaration = useSiteSession.firProvider.getFirClassifierByFqName(classId)
?: useSiteSession.nullableJavaSymbolProvider?.getClassLikeSymbolByClassId(classId)?.fir
?: findKotlinStdlibClass(classId, target)
val declaration = if (useSiteSession is LLFirLibraryOrLibrarySourceResolvableModuleSession) {
useSiteSession.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
} else {
useSiteSession.firProvider.getFirClassifierByFqName(classId)
?: useSiteSession.nullableJavaSymbolProvider?.getClassLikeSymbolByClassId(classId)?.fir
?: findKotlinStdlibClass(classId, target)
}
checkWithAttachmentBuilder(
declaration is FirRegularClass,