[ULC] Add support @receiver annotation site to UL classes
This commit is contained in:
+9
-10
@@ -190,16 +190,7 @@ internal class KtUltraLightParameterForSetterParameter(
|
||||
override fun tryGetKotlinType(): KotlinType? = property.getKotlinType()
|
||||
|
||||
override val givenAnnotations: List<KtLightAbstractAnnotation>?
|
||||
get() = property.annotationEntries.filter {
|
||||
it.useSiteTarget?.getAnnotationUseSiteTarget() == AnnotationUseSiteTarget.SETTER_PARAMETER
|
||||
}.map { entry ->
|
||||
KtLightAnnotationForSourceEntry(
|
||||
lazyQualifiedName = { entry.analyzeAnnotation()?.fqName?.asString() },
|
||||
kotlinOrigin = entry,
|
||||
parent = this,
|
||||
lazyClsDelegate = null
|
||||
)
|
||||
}
|
||||
get() = property.annotationEntries.toLightAnnotations(this, AnnotationUseSiteTarget.SETTER_PARAMETER)
|
||||
|
||||
override fun isVarArgs(): Boolean = false
|
||||
}
|
||||
@@ -217,6 +208,14 @@ internal class KtUltraLightReceiverParameter(
|
||||
containingDeclaration = containingDeclaration
|
||||
) {
|
||||
|
||||
override val givenAnnotations: List<KtLightAbstractAnnotation>? =
|
||||
containingDeclaration
|
||||
.receiverTypeReference
|
||||
?.modifierList
|
||||
?.annotationEntries
|
||||
?.toLightAnnotations(this, AnnotationUseSiteTarget.RECEIVER)
|
||||
?: emptyList()
|
||||
|
||||
override fun isVarArgs(): Boolean = false
|
||||
|
||||
override fun tryGetKotlinType(): KotlinType? =
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||
import org.jetbrains.kotlin.asJava.UltraLightClassModifierExtension
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
||||
import org.jetbrains.kotlin.asJava.elements.KotlinLightTypeParameterListBuilder
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightAnnotationForSourceEntry
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.asJava.elements.psiType
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
@@ -41,6 +42,7 @@ import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter
|
||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -518,3 +520,18 @@ internal fun KtUltraLightSupport.findAnnotation(owner: KtAnnotated, fqName: FqNa
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
internal fun List<KtAnnotationEntry>.toLightAnnotations(
|
||||
parent: PsiElement,
|
||||
site: AnnotationUseSiteTarget
|
||||
): List<KtLightAnnotationForSourceEntry> =
|
||||
filter {
|
||||
it.useSiteTarget?.getAnnotationUseSiteTarget() == site
|
||||
}.map { entry ->
|
||||
KtLightAnnotationForSourceEntry(
|
||||
lazyQualifiedName = { entry.analyzeAnnotation()?.fqName?.asString() },
|
||||
kotlinOrigin = entry,
|
||||
parent = parent,
|
||||
lazyClsDelegate = null
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user