[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.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator
|
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.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.checkReceiverTypeRefIsResolved
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
||||||
@@ -57,6 +58,7 @@ internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES)
|
|||||||
is FirCallableDeclaration -> {
|
is FirCallableDeclaration -> {
|
||||||
checkReturnTypeRefIsResolved(target, acceptImplicitTypeRef = true)
|
checkReturnTypeRefIsResolved(target, acceptImplicitTypeRef = true)
|
||||||
checkReceiverTypeRefIsResolved(target)
|
checkReceiverTypeRefIsResolved(target)
|
||||||
|
checkContextReceiverTypeRefIsResolved(target)
|
||||||
}
|
}
|
||||||
|
|
||||||
is FirTypeParameter -> {
|
is FirTypeParameter -> {
|
||||||
|
|||||||
+6
@@ -134,6 +134,12 @@ internal fun checkReceiverTypeRefIsResolved(declaration: FirCallableDeclaration,
|
|||||||
checkTypeRefIsResolved(receiverTypeRef, typeRefName = "receiver type", declaration, acceptImplicitTypeRef)
|
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) {
|
internal fun checkContractDescriptionIsResolved(declaration: FirContractDescriptionOwner) {
|
||||||
val contractDescription = declaration.contractDescription
|
val contractDescription = declaration.contractDescription
|
||||||
|
|||||||
Reference in New Issue
Block a user