KtLightElements: make light annotations lazier
Allow to get annotation list and to invoke `findAnnotation` without building delegate
Introduce KtLightNullabilityAnnotation which holds nullability information and is built
before delegate is built
This commit is contained in:
@@ -21,7 +21,7 @@ import com.intellij.psi.PsiConstantEvaluationHelper
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiExpression
|
||||
import com.intellij.psi.impl.ConstantExpressionEvaluator
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightAnnotation
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightAnnotationForSourceEntry
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
@@ -49,7 +49,7 @@ class KotlinLightConstantExpressionEvaluator : ConstantExpressionEvaluator {
|
||||
throwExceptionOnOverflow: Boolean,
|
||||
auxEvaluator: PsiConstantEvaluationHelper.AuxEvaluator?
|
||||
): Any? {
|
||||
if (expression !is KtLightAnnotation.LightExpressionValue<*>) return null
|
||||
if (expression !is KtLightAnnotationForSourceEntry.LightExpressionValue<*>) return null
|
||||
val expressionToCompute = expression.originalExpression ?: return null
|
||||
return when (expressionToCompute) {
|
||||
is KtExpression -> {
|
||||
|
||||
@@ -471,7 +471,7 @@ private fun copyModifierListItems(from: PsiModifierList, to: PsiModifierList, wi
|
||||
}
|
||||
}
|
||||
for (annotation in from.annotations) {
|
||||
val annotationName = annotation.qualifiedName!!
|
||||
val annotationName = annotation.qualifiedName ?: continue
|
||||
|
||||
if (Retention::class.java.name != annotationName) {
|
||||
to.addAnnotation(annotationName)
|
||||
|
||||
Reference in New Issue
Block a user