[FIR] BodyResolveContext: insideClassHeader should add container as well

This container will be used during an annotation call owner search

^KT-63042
This commit is contained in:
Dmitrii Gridin
2023-12-01 12:33:30 +01:00
committed by Space Team
parent ec180bca71
commit ed7415ab93
4 changed files with 5 additions and 6 deletions
@@ -98,11 +98,11 @@ class BodyResolveContext(
var insideClassHeader: Boolean = false
@OptIn(PrivateForInline::class)
inline fun insideClassHeader(action: () -> Unit) {
inline fun withClassHeader(clazz: FirRegularClass, action: () -> Unit) {
val old = insideClassHeader
insideClassHeader = true
try {
action()
withContainer(clazz, action)
} finally {
insideClassHeader = old
}
@@ -664,7 +664,7 @@ open class FirDeclarationsResolveTransformer(
}
if (isLocal || !implicitTypeOnly) {
context.insideClassHeader {
context.withClassHeader(regularClass) {
regularClass.transformAnnotations(this, ResolutionMode.ContextIndependent)
regularClass.transformTypeParameters(this, ResolutionMode.ContextIndependent)
regularClass.transformSuperTypeRefs(this, ResolutionMode.ContextIndependent)
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculatorForFullBodyResolve
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.*
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
import org.jetbrains.kotlin.fir.visitors.transformSingle
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.StandardClassIds
@@ -185,7 +184,7 @@ private class FirDeclarationsResolveTransformerForAnnotationArguments(
}
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): FirRegularClass {
context.insideClassHeader {
context.withClassHeader(regularClass) {
regularClass.transformAnnotations(this, ResolutionMode.ContextIndependent)
regularClass.transformTypeParameters(this, ResolutionMode.ContextIndependent)
regularClass.transformSuperTypeRefs(this, ResolutionMode.ContextIndependent)