[LL FIR] FirDesignation: add workaround for LLFirLibraryOrLibrarySourceResolvableModuleSession
^KTIJ-24326
This commit is contained in:
committed by
Space Team
parent
473a2dc87c
commit
7e36a88b82
+10
-10
@@ -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.
|
* 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
|
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.providers.nullableJavaSymbolProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirResolvableSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryOrLibrarySourceResolvableModuleSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder
|
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.getContainingFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry
|
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.declarations.utils.isLocal
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDestructuringDeclarationsOnTopLevel
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDestructuringDeclarationsOnTopLevel
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
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.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
|
||||||
|
|
||||||
class FirDesignationWithFile(
|
class FirDesignationWithFile(
|
||||||
path: List<FirRegularClass>,
|
path: List<FirRegularClass>,
|
||||||
@@ -118,9 +114,13 @@ private fun collectDesignationPathWithContainingClass(target: FirDeclaration, co
|
|||||||
val useSiteSession = getTargetSession(target)
|
val useSiteSession = getTargetSession(target)
|
||||||
|
|
||||||
fun resolveChunk(classId: ClassId): FirRegularClass {
|
fun resolveChunk(classId: ClassId): FirRegularClass {
|
||||||
val declaration = useSiteSession.firProvider.getFirClassifierByFqName(classId)
|
val declaration = if (useSiteSession is LLFirLibraryOrLibrarySourceResolvableModuleSession) {
|
||||||
?: useSiteSession.nullableJavaSymbolProvider?.getClassLikeSymbolByClassId(classId)?.fir
|
useSiteSession.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
|
||||||
?: findKotlinStdlibClass(classId, target)
|
} else {
|
||||||
|
useSiteSession.firProvider.getFirClassifierByFqName(classId)
|
||||||
|
?: useSiteSession.nullableJavaSymbolProvider?.getClassLikeSymbolByClassId(classId)?.fir
|
||||||
|
?: findKotlinStdlibClass(classId, target)
|
||||||
|
}
|
||||||
|
|
||||||
checkWithAttachmentBuilder(
|
checkWithAttachmentBuilder(
|
||||||
declaration is FirRegularClass,
|
declaration is FirRegularClass,
|
||||||
|
|||||||
Reference in New Issue
Block a user