[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:
committed by
Space Team
parent
ec180bca71
commit
ed7415ab93
+1
-1
@@ -88,7 +88,7 @@ private class LLFirAnnotationArgumentsTargetResolver(
|
|||||||
when {
|
when {
|
||||||
target is FirRegularClass -> {
|
target is FirRegularClass -> {
|
||||||
val declarationTransformer = transformer.declarationsTransformer
|
val declarationTransformer = transformer.declarationsTransformer
|
||||||
declarationTransformer.context.insideClassHeader {
|
declarationTransformer.context.withClassHeader(target) {
|
||||||
target.transformAnnotations(declarationTransformer, ResolutionMode.ContextIndependent)
|
target.transformAnnotations(declarationTransformer, ResolutionMode.ContextIndependent)
|
||||||
target.transformTypeParameters(declarationTransformer, ResolutionMode.ContextIndependent)
|
target.transformTypeParameters(declarationTransformer, ResolutionMode.ContextIndependent)
|
||||||
target.transformSuperTypeRefs(declarationTransformer, ResolutionMode.ContextIndependent)
|
target.transformSuperTypeRefs(declarationTransformer, ResolutionMode.ContextIndependent)
|
||||||
|
|||||||
+2
-2
@@ -98,11 +98,11 @@ class BodyResolveContext(
|
|||||||
var insideClassHeader: Boolean = false
|
var insideClassHeader: Boolean = false
|
||||||
|
|
||||||
@OptIn(PrivateForInline::class)
|
@OptIn(PrivateForInline::class)
|
||||||
inline fun insideClassHeader(action: () -> Unit) {
|
inline fun withClassHeader(clazz: FirRegularClass, action: () -> Unit) {
|
||||||
val old = insideClassHeader
|
val old = insideClassHeader
|
||||||
insideClassHeader = true
|
insideClassHeader = true
|
||||||
try {
|
try {
|
||||||
action()
|
withContainer(clazz, action)
|
||||||
} finally {
|
} finally {
|
||||||
insideClassHeader = old
|
insideClassHeader = old
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -664,7 +664,7 @@ open class FirDeclarationsResolveTransformer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isLocal || !implicitTypeOnly) {
|
if (isLocal || !implicitTypeOnly) {
|
||||||
context.insideClassHeader {
|
context.withClassHeader(regularClass) {
|
||||||
regularClass.transformAnnotations(this, ResolutionMode.ContextIndependent)
|
regularClass.transformAnnotations(this, ResolutionMode.ContextIndependent)
|
||||||
regularClass.transformTypeParameters(this, ResolutionMode.ContextIndependent)
|
regularClass.transformTypeParameters(this, ResolutionMode.ContextIndependent)
|
||||||
regularClass.transformSuperTypeRefs(this, ResolutionMode.ContextIndependent)
|
regularClass.transformSuperTypeRefs(this, ResolutionMode.ContextIndependent)
|
||||||
|
|||||||
+1
-2
@@ -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.ReturnTypeCalculatorForFullBodyResolve
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
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.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
@@ -185,7 +184,7 @@ private class FirDeclarationsResolveTransformerForAnnotationArguments(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): FirRegularClass {
|
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): FirRegularClass {
|
||||||
context.insideClassHeader {
|
context.withClassHeader(regularClass) {
|
||||||
regularClass.transformAnnotations(this, ResolutionMode.ContextIndependent)
|
regularClass.transformAnnotations(this, ResolutionMode.ContextIndependent)
|
||||||
regularClass.transformTypeParameters(this, ResolutionMode.ContextIndependent)
|
regularClass.transformTypeParameters(this, ResolutionMode.ContextIndependent)
|
||||||
regularClass.transformSuperTypeRefs(this, ResolutionMode.ContextIndependent)
|
regularClass.transformSuperTypeRefs(this, ResolutionMode.ContextIndependent)
|
||||||
|
|||||||
Reference in New Issue
Block a user