[AA LC] Implement default values for methods of annotations

This commit is contained in:
Dmitriy Novozhilov
2022-08-03 16:00:15 +03:00
parent 3a51a8a655
commit a88fdd5eb7
10 changed files with 85 additions and 21 deletions
@@ -7,6 +7,9 @@ package org.jetbrains.kotlin.light.classes.symbol.methods
import com.intellij.psi.*
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtConstantInitializerValue
import org.jetbrains.kotlin.analysis.api.KtConstantValueForAnnotation
import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue
import org.jetbrains.kotlin.analysis.api.lifetime.isValid
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
@@ -193,4 +196,18 @@ internal class SymbolLightAccessorMethod(
override fun isValid(): Boolean = super.isValid() && propertyAccessorSymbol.isValid()
override fun isOverride(): Boolean = propertyAccessorSymbol.isOverride
private val _defaultValue: PsiAnnotationMemberValue? by lazyPub {
if (!containingClass.isAnnotationType) return@lazyPub null
when (val initializer = containingPropertySymbol.initializer) {
is KtConstantInitializerValue -> initializer.constant.createPsiLiteral(this)
is KtConstantValueForAnnotation -> initializer.annotationValue.toAnnotationMemberValue(this)
is KtNonConstantInitializerValue -> null
null -> null
}
}
override fun getDefaultValue(): PsiAnnotationMemberValue? {
return _defaultValue
}
}
@@ -88,7 +88,7 @@ internal abstract class SymbolLightMethodBase(
override fun getThrowsList(): PsiReferenceList =
KotlinLightReferenceListBuilder(manager, language, PsiReferenceList.Role.THROWS_LIST) //TODO()
override fun getDefaultValue(): PsiAnnotationMemberValue? = null //TODO()
override fun getDefaultValue(): PsiAnnotationMemberValue? = null
protected fun <T> T.computeJvmMethodName(
defaultName: String,