[LL FIR] add more debug info into containingClass
^KT-61788
This commit is contained in:
committed by
Space Team
parent
4b6c767704
commit
e3ad946d23
+19
-5
@@ -22,10 +22,12 @@ import org.jetbrains.kotlin.fir.psi
|
|||||||
import org.jetbrains.kotlin.fir.realPsi
|
import org.jetbrains.kotlin.fir.realPsi
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType
|
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
|
||||||
|
import org.jetbrains.kotlin.fir.utils.exceptions.withFirLookupTagEntry
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
|
import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.checkWithAttachment
|
||||||
|
|
||||||
internal fun KtDeclaration.findSourceNonLocalFirDeclaration(
|
internal fun KtDeclaration.findSourceNonLocalFirDeclaration(
|
||||||
firFileBuilder: LLFirFileBuilder,
|
firFileBuilder: LLFirFileBuilder,
|
||||||
@@ -173,11 +175,23 @@ private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun FirAnonymousInitializer.containingClass(): FirRegularClass {
|
fun FirAnonymousInitializer.containingClass(): FirRegularClass {
|
||||||
val dispatchReceiverType = this.dispatchReceiverType as? ConeLookupTagBasedType
|
val dispatchReceiverType = this.dispatchReceiverType
|
||||||
?: error("dispatchReceiverType for FirAnonymousInitializer modifier cannot be null")
|
checkWithAttachment(
|
||||||
|
condition = dispatchReceiverType != null,
|
||||||
|
message = { "dispatchReceiverType for ${FirAnonymousInitializer::class.simpleName} modifier cannot be null" },
|
||||||
|
) {
|
||||||
|
withFirEntry("initializer", this@containingClass)
|
||||||
|
}
|
||||||
|
|
||||||
val dispatchReceiverSymbol = dispatchReceiverType.lookupTag.toSymbol(llFirSession)
|
val lookupTag = dispatchReceiverType.lookupTag
|
||||||
?: error("symbol for FirAnonymousInitializer cannot be null")
|
val dispatchReceiverSymbol = lookupTag.toSymbol(llFirSession)
|
||||||
|
checkWithAttachment(
|
||||||
|
condition = dispatchReceiverSymbol != null,
|
||||||
|
message = { "symbol for ${FirAnonymousInitializer::class.simpleName} cannot be null" },
|
||||||
|
) {
|
||||||
|
withFirEntry("initializer", this@containingClass)
|
||||||
|
withFirLookupTagEntry("tag", lookupTag)
|
||||||
|
}
|
||||||
|
|
||||||
return dispatchReceiverSymbol.fir as FirRegularClass
|
return dispatchReceiverSymbol.fir as FirRegularClass
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user