[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 fun tryGetKotlinType(): KotlinType? = property.getKotlinType()
|
||||||
|
|
||||||
override val givenAnnotations: List<KtLightAbstractAnnotation>?
|
override val givenAnnotations: List<KtLightAbstractAnnotation>?
|
||||||
get() = property.annotationEntries.filter {
|
get() = property.annotationEntries.toLightAnnotations(this, AnnotationUseSiteTarget.SETTER_PARAMETER)
|
||||||
it.useSiteTarget?.getAnnotationUseSiteTarget() == AnnotationUseSiteTarget.SETTER_PARAMETER
|
|
||||||
}.map { entry ->
|
|
||||||
KtLightAnnotationForSourceEntry(
|
|
||||||
lazyQualifiedName = { entry.analyzeAnnotation()?.fqName?.asString() },
|
|
||||||
kotlinOrigin = entry,
|
|
||||||
parent = this,
|
|
||||||
lazyClsDelegate = null
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isVarArgs(): Boolean = false
|
override fun isVarArgs(): Boolean = false
|
||||||
}
|
}
|
||||||
@@ -217,6 +208,14 @@ internal class KtUltraLightReceiverParameter(
|
|||||||
containingDeclaration = containingDeclaration
|
containingDeclaration = containingDeclaration
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
override val givenAnnotations: List<KtLightAbstractAnnotation>? =
|
||||||
|
containingDeclaration
|
||||||
|
.receiverTypeReference
|
||||||
|
?.modifierList
|
||||||
|
?.annotationEntries
|
||||||
|
?.toLightAnnotations(this, AnnotationUseSiteTarget.RECEIVER)
|
||||||
|
?: emptyList()
|
||||||
|
|
||||||
override fun isVarArgs(): Boolean = false
|
override fun isVarArgs(): Boolean = false
|
||||||
|
|
||||||
override fun tryGetKotlinType(): KotlinType? =
|
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.UltraLightClassModifierExtension
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
||||||
import org.jetbrains.kotlin.asJava.elements.KotlinLightTypeParameterListBuilder
|
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.KtLightMethod
|
||||||
import org.jetbrains.kotlin.asJava.elements.psiType
|
import org.jetbrains.kotlin.asJava.elements.psiType
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
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.codegen.state.KotlinTypeMapper
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
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.load.kotlin.TypeMappingMode
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -518,3 +520,18 @@ internal fun KtUltraLightSupport.findAnnotation(owner: KtAnnotated, fqName: FqNa
|
|||||||
|
|
||||||
return null
|
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