[LL FIR] FirElementBuilder: support KtAnnotation in file annotations

^KT-65780
This commit is contained in:
Dmitrii Gridin
2024-02-28 22:40:06 +01:00
committed by Space Team
parent ba92fc97f9
commit 16878ca20d
3 changed files with 5 additions and 5 deletions
@@ -159,10 +159,10 @@ internal class FirElementBuilder(private val moduleComponents: LLFirModuleResolv
return findElementInside(firElement = anchorFir, element = element, stopAt = anchorElement)
}
private fun KtAnnotationEntry.owner(): KtAnnotated? {
private fun PsiElement.annotationOwner(): KtAnnotated? {
val modifierList = when (val parent = parent) {
is KtModifierList -> parent
is KtAnnotation -> parent.parent as? KtModifierList
is KtAnnotation -> return parent.annotationOwner()
is KtFileAnnotationList -> return parent.parent as? KtFile
else -> null
}
@@ -175,7 +175,7 @@ internal class FirElementBuilder(private val moduleComponents: LLFirModuleResolv
): FirElement? = getFirForNonBodyElement<KtAnnotationEntry, KtAnnotated>(
element = element,
anchorElementProvider = { it.parentOfType<KtAnnotationEntry>(withSelf = true) },
elementOwnerProvider = { it.owner() },
elementOwnerProvider = { it.annotationOwner() },
resolveAndFindFirForAnchor = { declaration, anchor -> declaration.resolveAndFindAnnotation(anchor, goDeep = true) },
)
@@ -6,5 +6,5 @@ FIR element rendered:
@FILE:R|kotlin/Suppress|[Types](names = vararg(String()))
FIR FILE:
FILE: [ResolvedTo(BODY_RESOLVE)] fileAnnotation2.kt
FILE: [ResolvedTo(ANNOTATION_ARGUMENTS)] fileAnnotation2.kt
@FILE:R|kotlin/Suppress|[Types](names = vararg(String()))
@@ -6,7 +6,7 @@ FIR element rendered:
@FILE:R|kotlin/Suppress|[Types](names = vararg(String()))
FIR FILE:
FILE: [ResolvedTo(BODY_RESOLVE)] fileAnnotation2Script.kts
FILE: [ResolvedTo(ANNOTATION_ARGUMENTS)] fileAnnotation2Script.kts
@FILE:R|kotlin/Suppress|[Types](names = vararg(String()))
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-fileAnnotation2Script.kts>