[LL FIR] add checks about resolved context receivers
^KT-60728 ^KT-60519
This commit is contained in:
committed by
Space Team
parent
0e0847bc9d
commit
77344c0845
+2
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveT
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkAnnotationTypeIsResolved
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkContextReceiverTypeRefIsResolved
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReceiverTypeRefIsResolved
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
||||
@@ -57,6 +58,7 @@ internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES)
|
||||
is FirCallableDeclaration -> {
|
||||
checkReturnTypeRefIsResolved(target, acceptImplicitTypeRef = true)
|
||||
checkReceiverTypeRefIsResolved(target)
|
||||
checkContextReceiverTypeRefIsResolved(target)
|
||||
}
|
||||
|
||||
is FirTypeParameter -> {
|
||||
|
||||
+6
@@ -134,6 +134,12 @@ internal fun checkReceiverTypeRefIsResolved(declaration: FirCallableDeclaration,
|
||||
checkTypeRefIsResolved(receiverTypeRef, typeRefName = "receiver type", declaration, acceptImplicitTypeRef)
|
||||
}
|
||||
|
||||
internal fun checkContextReceiverTypeRefIsResolved(declaration: FirCallableDeclaration, acceptImplicitTypeRef: Boolean = false) {
|
||||
for (contextReceiver in declaration.contextReceivers) {
|
||||
val receiverTypeRef = contextReceiver.typeRef
|
||||
checkTypeRefIsResolved(receiverTypeRef, typeRefName = "context receiver type", declaration, acceptImplicitTypeRef)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun checkContractDescriptionIsResolved(declaration: FirContractDescriptionOwner) {
|
||||
val contractDescription = declaration.contractDescription
|
||||
|
||||
Reference in New Issue
Block a user