[LL FIR] LLFirContractsLazyResolver: add isResolved check
Currently, FirLegacyRawContractDescription is a valid class for resolved contract in case of error description. This condition should be dropped after KT-60310 ^KT-60310
This commit is contained in:
committed by
Space Team
parent
4b330e88be
commit
3d40eba379
+2
-1
@@ -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.api.throwUnexpectedFirElementError
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||||
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.util.blockGuard
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.blockGuard
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkContractDescriptionIsResolved
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isCallableWithSpecialBody
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isCallableWithSpecialBody
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
||||||
@@ -33,7 +34,7 @@ internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.C
|
|||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirContractDescriptionOwner) return
|
if (target !is FirContractDescriptionOwner) return
|
||||||
// TODO checkContractDescriptionIsResolved(declaration)
|
checkContractDescriptionIsResolved(target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder
|
|||||||
import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder
|
import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder
|
||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -136,7 +137,9 @@ internal fun checkReceiverTypeRefIsResolved(declaration: FirCallableDeclaration,
|
|||||||
internal fun checkContractDescriptionIsResolved(declaration: FirContractDescriptionOwner) {
|
internal fun checkContractDescriptionIsResolved(declaration: FirContractDescriptionOwner) {
|
||||||
val contractDescription = declaration.contractDescription
|
val contractDescription = declaration.contractDescription
|
||||||
checkWithAttachmentBuilder(
|
checkWithAttachmentBuilder(
|
||||||
condition = contractDescription is FirResolvedContractDescription || contractDescription is FirEmptyContractDescription,
|
condition = contractDescription is FirResolvedContractDescription ||
|
||||||
|
contractDescription is FirEmptyContractDescription ||
|
||||||
|
contractDescription is FirLegacyRawContractDescription /* TODO: should be dropped after KT-60310 */,
|
||||||
message = { "Expected ${FirResolvedContractDescription::class.simpleName} or ${FirEmptyContractDescription::class.simpleName} but ${contractDescription::class.simpleName} found for ${declaration::class.simpleName}" }
|
message = { "Expected ${FirResolvedContractDescription::class.simpleName} or ${FirEmptyContractDescription::class.simpleName} but ${contractDescription::class.simpleName} found for ${declaration::class.simpleName}" }
|
||||||
) {
|
) {
|
||||||
withFirEntry("declaration", declaration)
|
withFirEntry("declaration", declaration)
|
||||||
|
|||||||
Reference in New Issue
Block a user