[FIR] Add enum entry to body resolve context containers
This fixes processing of annotations on enum entries. Before, the check in BodyResolveContext.forAnnotation would set the tower data mode to CLASS_HEADER_ANNOTATIONS because no containers were present. This would lead to some tower data elements like nested classifiers missing, which would lead to false positive unresolved references. #KT-63761 Fixed
This commit is contained in:
committed by
Space Team
parent
bb5e219c1d
commit
06811dfc2f
+5
-2
@@ -770,9 +770,12 @@ class BodyResolveContext(
|
||||
}
|
||||
|
||||
@OptIn(PrivateForInline::class)
|
||||
inline fun <T> forEnumEntry(
|
||||
inline fun <T> withEnumEntry(
|
||||
enumEntry: FirEnumEntry,
|
||||
f: () -> T
|
||||
): T = withTowerDataMode(FirTowerDataMode.ENUM_ENTRY, f)
|
||||
): T = withTowerDataMode(FirTowerDataMode.ENUM_ENTRY) {
|
||||
withContainer(enumEntry, f)
|
||||
}
|
||||
|
||||
@OptIn(PrivateForInline::class)
|
||||
inline fun <T> forAnnotation(
|
||||
|
||||
+1
-1
@@ -106,7 +106,7 @@ open class FirDeclarationsResolveTransformer(
|
||||
|
||||
override fun transformEnumEntry(enumEntry: FirEnumEntry, data: ResolutionMode): FirEnumEntry {
|
||||
if (implicitTypeOnly || enumEntry.initializerResolved) return enumEntry
|
||||
return context.forEnumEntry {
|
||||
return context.withEnumEntry(enumEntry) {
|
||||
(enumEntry.transformChildren(this, data) as FirEnumEntry)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -294,7 +294,7 @@ private class FirDeclarationsResolveTransformerForAnnotationArguments(
|
||||
}
|
||||
|
||||
override fun transformEnumEntry(enumEntry: FirEnumEntry, data: ResolutionMode): FirEnumEntry {
|
||||
context.forEnumEntry {
|
||||
context.withEnumEntry(enumEntry) {
|
||||
enumEntry
|
||||
.transformAnnotations(transformer, data)
|
||||
.transformReceiverParameter(transformer, data)
|
||||
|
||||
Reference in New Issue
Block a user