[ULC] Fix invalid annotation resolve for KtUltraLightParameterForSetterParameter

This commit is contained in:
Igor Yakovlev
2020-07-20 21:57:58 +03:00
parent db6aa9140d
commit dbb4337ac4
7 changed files with 55 additions and 6 deletions
@@ -24,6 +24,7 @@ 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
internal class KtUltraLightSuspendContinuationParameter(
private val ktFunction: KtFunction,
@@ -144,7 +145,7 @@ internal abstract class KtAbstractUltraLightParameterForDeclaration(
) : KtUltraLightParameter(name, kotlinOrigin, support, method) {
protected fun tryGetContainingDescriptor(): CallableDescriptor? =
containingDeclaration.resolve() as? CallableMemberDescriptor
containingDeclaration.resolve() as? CallableDescriptor
protected abstract fun tryGetKotlinType(): KotlinType?
@@ -189,11 +190,16 @@ internal class KtUltraLightParameterForSetterParameter(
override fun tryGetKotlinType(): KotlinType? = property.getKotlinType()
override val givenAnnotations: List<KtLightAbstractAnnotation>?
get() = (property.resolve() as? PropertyDescriptor)
?.setter
?.valueParameters
?.firstOrNull()
?.obtainLightAnnotations(support, this)
get() = property.annotationEntries.filter {
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
}