From 77344c08454f4f7f8e568fbd225019dbad88b393 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Sun, 30 Jul 2023 05:57:02 +0200 Subject: [PATCH] [LL FIR] add checks about resolved context receivers ^KT-60728 ^KT-60519 --- .../low/level/api/fir/transformers/LLFirTypeLazyResolver.kt | 2 ++ .../low/level/api/fir/util/firCheckResolvedUtils.kt | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt index 662f96704a6..b16c157e1fc 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt @@ -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 -> { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt index f2fed514d10..5546090e0c9 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt @@ -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