[FIR] disable lazy resolve checks on building deserialized annotation arguments

During converting library annotations to FIR nodes
and building required scopes inside, lazyResolveToPhase may be called.
For such cases it's okay to skip the lazy resolve contract checks as
those declarations are always fully resolved and
lazy resolve will do nothing.
This commit is contained in:
Mikhail Glukhikh
2022-12-09 13:49:04 +01:00
committed by Space Team
parent b07d353fd4
commit 43775a5912
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
import org.jetbrains.kotlin.fir.scopes.getDeclaredConstructors
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.lazyDeclarationResolver
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.metadata.ProtoBuf
@@ -182,7 +183,9 @@ abstract class AbstractAnnotationDeserializer(
annotationTypeRef = buildResolvedTypeRef {
type = ConeClassLikeLookupTagImpl(classId).constructClassType(emptyArray(), isNullable = false)
}
this.argumentMapping = createArgumentMapping(proto, classId, nameResolver)
session.lazyDeclarationResolver.disableLazyResolveContractChecksInside {
this.argumentMapping = createArgumentMapping(proto, classId, nameResolver)
}
useSiteTarget?.let {
this.useSiteTarget = it
}