Analysis API: rename KtConstantValue -> KtAnnotationValue as it is annotation specific

This commit is contained in:
Ilya Kirillov
2021-11-23 15:55:23 +01:00
parent 760e35d3b7
commit b1c8a9e886
23 changed files with 108 additions and 132 deletions
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtLiteralConstantValue
import org.jetbrains.kotlin.analysis.api.annotations.KtLiteralAnnotationValue
internal fun KtAnnotatedSymbol.hasJvmSyntheticAnnotation(annotationUseSiteTarget: AnnotationUseSiteTarget? = null): Boolean =
hasAnnotation("kotlin/jvm/JvmSynthetic", annotationUseSiteTarget)
@@ -31,7 +31,7 @@ internal fun KtAnnotatedSymbol.getJvmNameFromAnnotation(annotationUseSiteTarget:
}
return annotation?.let {
(it.arguments.firstOrNull()?.expression as? KtLiteralConstantValue<*>)?.value as? String
(it.arguments.firstOrNull()?.expression as? KtLiteralAnnotationValue<*>)?.value as? String
}
}
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.analysis.api.isValid
import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtLiteralConstantValue
import org.jetbrains.kotlin.analysis.api.annotations.KtLiteralAnnotationValue
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtProperty
@@ -113,7 +113,7 @@ internal class FirLightFieldForPropertySymbol(
if (!propertySymbol.isConst) return@lazyPub null
if (!propertySymbol.isVal) return@lazyPub null
val constInitializer = propertySymbol.initializer as? KtConstantInitializerValue ?: return@lazyPub null
(constInitializer.constant as? KtLiteralConstantValue<*>)?.createPsiLiteral(this)
(constInitializer.constant as? KtLiteralAnnotationValue<*>)?.createPsiLiteral(this)
}
override fun getInitializer(): PsiExpression? = _initializer
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.*
import org.jetbrains.kotlin.analysis.api.components.DefaultTypeClassIds
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
@@ -170,13 +171,13 @@ private fun escapeString(str: String): String = buildString {
}
}
internal fun KtConstantValue.toAnnotationMemberValue(parent: PsiElement): PsiAnnotationMemberValue? {
internal fun KtAnnotationValue.toAnnotationMemberValue(parent: PsiElement): PsiAnnotationMemberValue? {
return when (this) {
is KtArrayConstantValue ->
is KtArrayAnnotationValue ->
FirPsiArrayInitializerMemberValue(sourcePsi, parent) { arrayLiteralParent ->
values.mapNotNull { element -> element.toAnnotationMemberValue(arrayLiteralParent) }
}
is KtAnnotationConstantValue ->
is KtAnnotationAnnotationValue ->
FirLightSimpleAnnotation(classId?.relativeClassName?.asString(), parent, arguments, sourcePsi)
else ->
createPsiLiteral(parent)?.let {
@@ -188,11 +189,11 @@ internal fun KtConstantValue.toAnnotationMemberValue(parent: PsiElement): PsiAnn
}
}
private fun KtConstantValue.asStringForPsiLiteral(): String? =
private fun KtAnnotationValue.asStringForPsiLiteral(): String? =
when (this) {
is KtEnumEntryConstantValue ->
is KtEnumEntryAnnotationValue ->
"${callableId?.classId?.asSingleFqName()?.asString() ?: ""}.${callableId?.callableName}"
is KtLiteralConstantValue<*> -> {
is KtLiteralAnnotationValue<*> -> {
when (val value = this.value) {
is String -> "\"${escapeString(value)}\""
is Long -> "${value}L"
@@ -203,7 +204,7 @@ private fun KtConstantValue.asStringForPsiLiteral(): String? =
else -> null
}
internal fun KtConstantValue.createPsiLiteral(parent: PsiElement): PsiExpression? {
internal fun KtAnnotationValue.createPsiLiteral(parent: PsiElement): PsiExpression? {
val asString = asStringForPsiLiteral() ?: return null
val instance = PsiElementFactory.getInstance(parent.project)
return try {