diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt index d5c395f46b9..8d85c977ecb 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt @@ -56,6 +56,7 @@ class KtUltraLightClassForFacade( files.flatMap { file -> file.annotationEntries.map { entry -> KtLightAnnotationForSourceEntry( + name = entry.shortName?.identifier, lazyQualifiedName = { entry.analyzeAnnotation()?.fqName?.asString() }, kotlinOrigin = entry, parent = _modifierList, diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt index dffb024db24..eacbfa87b3c 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt @@ -20,14 +20,11 @@ import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.load.kotlin.TypeMappingMode -import org.jetbrains.kotlin.psi.KtCallableDeclaration -import org.jetbrains.kotlin.psi.KtDeclaration -import org.jetbrains.kotlin.psi.KtFunction -import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.codegen.AsmUtil.LABELED_THIS_PARAMETER import org.jetbrains.kotlin.codegen.AsmUtil.RECEIVER_PARAMETER_NAME import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget +import org.jetbrains.kotlin.psi.* internal class KtUltraLightSuspendContinuationParameter( private val ktFunction: KtFunction, @@ -180,6 +177,12 @@ internal class KtUltraLightParameterForSource( return this } + override val givenAnnotations: List? + get() { + val site = if (kotlinOrigin.hasValOrVar()) AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER else null + return kotlinOrigin.annotationEntries.toLightAnnotations(this, site) + } + override fun getText(): String? = kotlinOrigin.text override fun getTextRange(): TextRange = kotlinOrigin.textRange override fun getTextOffset(): Int = kotlinOrigin.textOffset diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt index 75af6ba6ce5..a6c32653a13 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt @@ -522,12 +522,13 @@ internal fun KtUltraLightSupport.findAnnotation(owner: KtAnnotated, fqName: FqNa internal fun List.toLightAnnotations( parent: PsiElement, - site: AnnotationUseSiteTarget + site: AnnotationUseSiteTarget? ): List = filter { it.useSiteTarget?.getAnnotationUseSiteTarget() == site }.map { entry -> KtLightAnnotationForSourceEntry( + name = entry.shortName?.identifier, lazyQualifiedName = { entry.analyzeAnnotation()?.fqName?.asString() }, kotlinOrigin = entry, parent = parent, diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt index 24ac2bcdc46..9eb48cc6819 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt @@ -178,7 +178,13 @@ private fun lightAnnotationsForEntries(lightModifierList: KtLightModifierList<*> } } else null - KtLightAnnotationForSourceEntry({ fqName }, entry, lightModifierList, lazyClsDelegate) + KtLightAnnotationForSourceEntry( + name = entry.shortName?.identifier, + lazyQualifiedName = { fqName }, + kotlinOrigin = entry, + parent = lightModifierList, + lazyClsDelegate = lazyClsDelegate + ) } } } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/lightAnnotations.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/lightAnnotations.kt index ec94f8b6faf..0a2ecf2951c 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/lightAnnotations.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/lightAnnotations.kt @@ -75,6 +75,7 @@ abstract class KtLightAbstractAnnotation(parent: PsiElement, computeDelegate: La } class KtLightAnnotationForSourceEntry( + private val name: String?, private val lazyQualifiedName: () -> String?, override val kotlinOrigin: KtCallElement, parent: PsiElement, @@ -87,7 +88,7 @@ class KtLightAnnotationForSourceEntry( override fun getQualifiedName(): String? = _qualifiedName - override fun getName(): String? = null + override fun getName(): String? = name override fun findAttributeValue(name: String?) = getAttributeValue(name, true) @@ -397,9 +398,10 @@ fun convertToLightAnnotationMemberValue(lightParent: PsiElement, argument: KtExp val annotationName = argument.calleeExpression?.let { getAnnotationName(it) } if (annotationName != null) { return KtLightAnnotationForSourceEntry( - { annotationName }, - argument, - lightParent, + name = annotationName, + lazyQualifiedName = { annotationName }, + kotlinOrigin = argument, + parent = lightParent, lazyClsDelegate = null ) }