[AA LC] Compute nullability annotation for parameter for extension receiver
This commit is contained in:
+11
-7
@@ -91,6 +91,16 @@ internal fun KtAnnotatedSymbol.hasAnnotation(fqName: FqName, annotationUseSiteTa
|
||||
it.useSiteTarget == annotationUseSiteTarget && it.classId?.asSingleFqName() == fqName
|
||||
}
|
||||
|
||||
internal fun NullabilityType.computeNullabilityAnnotation(parent: PsiElement): SymbolLightSimpleAnnotation? {
|
||||
return when (this) {
|
||||
NullabilityType.NotNull -> NotNull::class.java
|
||||
NullabilityType.Nullable -> Nullable::class.java
|
||||
else -> null
|
||||
}?.let {
|
||||
SymbolLightSimpleAnnotation(it.name, parent)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun KtAnnotatedSymbol.computeAnnotations(
|
||||
parent: PsiElement,
|
||||
nullability: NullabilityType,
|
||||
@@ -98,13 +108,7 @@ internal fun KtAnnotatedSymbol.computeAnnotations(
|
||||
includeAnnotationsWithoutSite: Boolean = true
|
||||
): List<PsiAnnotation> {
|
||||
|
||||
val nullabilityAnnotation = when (nullability) {
|
||||
NullabilityType.NotNull -> NotNull::class.java
|
||||
NullabilityType.Nullable -> Nullable::class.java
|
||||
else -> null
|
||||
}?.let {
|
||||
SymbolLightSimpleAnnotation(it.name, parent)
|
||||
}
|
||||
val nullabilityAnnotation = nullability.computeNullabilityAnnotation(parent)
|
||||
|
||||
val parentIsAnnotation = (parent as? PsiClass)?.isAnnotationType == true
|
||||
|
||||
|
||||
+7
-2
@@ -19,9 +19,11 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightAnnotationForAnnotationCall
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeNullabilityAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nullabilityType
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
|
||||
context(KtAnalysisSession)
|
||||
@@ -66,8 +68,11 @@ internal class SymbolLightParameterForReceiver private constructor(
|
||||
override val kotlinOrigin: KtParameter? = null
|
||||
|
||||
private val _annotations: List<PsiAnnotation> by lazyPub {
|
||||
receiverType.annotations.map {
|
||||
SymbolLightAnnotationForAnnotationCall(it, this)
|
||||
buildList {
|
||||
receiverType.nullabilityType.computeNullabilityAnnotation(this@SymbolLightParameterForReceiver)?.let { add(it) }
|
||||
receiverType.annotations.mapTo(this) {
|
||||
SymbolLightAnnotationForAnnotationCall(it, this@SymbolLightParameterForReceiver)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user