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
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.analysis.api.components.KtCompileTimeConstantProvide
import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession
import org.jetbrains.kotlin.analysis.api.descriptors.components.base.Fe10KtAnalysisSessionComponent
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationValue
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
@@ -21,7 +21,7 @@ internal class KtFe10CompileTimeConstantProvider(
override val token: ValidityToken
get() = analysisSession.token
override fun evaluate(expression: KtExpression): KtConstantValue? {
override fun evaluate(expression: KtExpression): KtAnnotationValue? {
val bindingContext = analysisContext.analyze(expression)
val constant = ConstantExpressionEvaluator.getPossiblyErrorConstant(expression, bindingContext)
return constant?.toConstantValue(TypeUtils.NO_EXPECTED_TYPE)?.toKtConstantValue()
@@ -5,8 +5,6 @@
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtConstantInitializerValue
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
@@ -15,7 +13,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertyGetterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySetterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base
import org.jetbrains.kotlin.analysis.api.*
import org.jetbrains.kotlin.analysis.api.annotations.KtNamedConstantValue
import org.jetbrains.kotlin.analysis.api.annotations.*
import org.jetbrains.kotlin.analysis.api.components.KtDeclarationRendererOptions
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.*
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.load.kotlin.toSourceElement
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.calls.inference.CapturedType
@@ -263,30 +262,30 @@ internal val MemberDescriptor.ktModality: Modality
return this.modality
}
internal fun ConstantValue<*>.toKtConstantValue(): KtConstantValue {
internal fun ConstantValue<*>.toKtConstantValue(): KtAnnotationValue {
return when (this) {
is BooleanValue -> KtLiteralConstantValue(ConstantValueKind.Boolean, value, null)
is CharValue -> KtLiteralConstantValue(ConstantValueKind.Char, value, null)
is ByteValue -> KtLiteralConstantValue(ConstantValueKind.Byte, value, null)
is UByteValue -> KtLiteralConstantValue(ConstantValueKind.UnsignedByte, value, null)
is ShortValue -> KtLiteralConstantValue(ConstantValueKind.Short, value, null)
is UShortValue -> KtLiteralConstantValue(ConstantValueKind.UnsignedShort, value, null)
is IntValue -> KtLiteralConstantValue(ConstantValueKind.Int, value, null)
is UIntValue -> KtLiteralConstantValue(ConstantValueKind.UnsignedInt, value, null)
is LongValue -> KtLiteralConstantValue(ConstantValueKind.Long, value, null)
is ULongValue -> KtLiteralConstantValue(ConstantValueKind.UnsignedLong, value, null)
is FloatValue -> KtLiteralConstantValue(ConstantValueKind.Float, value, null)
is DoubleValue -> KtLiteralConstantValue(ConstantValueKind.Double, value, null)
is NullValue -> KtLiteralConstantValue(ConstantValueKind.Null, null, null)
is StringValue -> KtLiteralConstantValue(ConstantValueKind.String, value, null)
is ArrayValue -> KtArrayConstantValue(value.map { it.toKtConstantValue() }, null)
is EnumValue -> KtEnumEntryConstantValue(CallableId(enumClassId, enumEntryName), null)
is BooleanValue -> KtLiteralAnnotationValue(ConstantValueKind.Boolean, value, null)
is CharValue -> KtLiteralAnnotationValue(ConstantValueKind.Char, value, null)
is ByteValue -> KtLiteralAnnotationValue(ConstantValueKind.Byte, value, null)
is UByteValue -> KtLiteralAnnotationValue(ConstantValueKind.UnsignedByte, value, null)
is ShortValue -> KtLiteralAnnotationValue(ConstantValueKind.Short, value, null)
is UShortValue -> KtLiteralAnnotationValue(ConstantValueKind.UnsignedShort, value, null)
is IntValue -> KtLiteralAnnotationValue(ConstantValueKind.Int, value, null)
is UIntValue -> KtLiteralAnnotationValue(ConstantValueKind.UnsignedInt, value, null)
is LongValue -> KtLiteralAnnotationValue(ConstantValueKind.Long, value, null)
is ULongValue -> KtLiteralAnnotationValue(ConstantValueKind.UnsignedLong, value, null)
is FloatValue -> KtLiteralAnnotationValue(ConstantValueKind.Float, value, null)
is DoubleValue -> KtLiteralAnnotationValue(ConstantValueKind.Double, value, null)
is NullValue -> KtLiteralAnnotationValue(ConstantValueKind.Null, null, null)
is StringValue -> KtLiteralAnnotationValue(ConstantValueKind.String, value, null)
is ArrayValue -> KtArrayAnnotationValue(value.map { it.toKtConstantValue() }, null)
is EnumValue -> KtEnumEntryAnnotationValue(CallableId(enumClassId, enumEntryName), null)
is AnnotationValue -> {
val arguments = value.allValueArguments.map { (name, v) -> KtNamedConstantValue(name.asString(), v.toKtConstantValue()) }
KtAnnotationConstantValue(value.annotationClass?.classId, arguments, null)
KtAnnotationAnnotationValue(value.annotationClass?.classId, arguments, null)
}
is ErrorValue -> KtErrorValue(this.toString())
else -> KtUnsupportedConstantValue
else -> KtUnsupportedAnnotationValue
}
}
@@ -5,12 +5,9 @@
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
import org.jetbrains.kotlin.analysis.api.KtConstantInitializerValue
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.createKtInitializerValue
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility
@@ -25,9 +22,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertyGetterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySetterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtUnsupportedConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType
@@ -42,8 +37,6 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
import org.jetbrains.kotlin.types.TypeUtils
internal class KtFe10PsiKotlinPropertySymbol(
override val psi: KtProperty,
@@ -5,12 +5,11 @@
package org.jetbrains.kotlin.analysis.api.descriptors.utils
import org.jetbrains.kotlin.analysis.api.annotations.KtNamedConstantValue
import org.jetbrains.kotlin.analysis.api.annotations.*
import org.jetbrains.kotlin.analysis.api.components.KtTypeRendererOptions
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.classId
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.maybeLocalClassId
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
import org.jetbrains.kotlin.builtins.getReceiverTypeFromFunctionType
import org.jetbrains.kotlin.builtins.getReturnTypeFromFunctionType
@@ -110,14 +109,14 @@ internal class KtFe10TypeRenderer(private val options: KtTypeRendererOptions, pr
}
}
private fun KtFe10RendererConsumer.renderConstantValueDebug(value: KtConstantValue) {
private fun KtFe10RendererConsumer.renderConstantValueDebug(value: KtAnnotationValue) {
when (value) {
is KtAnnotationConstantValue -> renderAnnotationDebug(value.classId, value.arguments)
is KtArrayConstantValue ->
is KtAnnotationAnnotationValue -> renderAnnotationDebug(value.classId, value.arguments)
is KtArrayAnnotationValue ->
renderList(value.values, separator = ", ", prefix = "[", postfix = "]") { renderConstantValueDebug(it) }
is KtEnumEntryConstantValue -> append(value.callableId)
is KtLiteralConstantValue<*> -> append(value.constantValueKind.asString).append("(").append(value.value).append(")")
KtUnsupportedConstantValue -> append(KtUnsupportedConstantValue::class.java.simpleName)
is KtEnumEntryAnnotationValue -> append(value.callableId)
is KtLiteralAnnotationValue<*> -> append(value.constantValueKind.asString).append("(").append(value.value).append(")")
KtUnsupportedAnnotationValue -> append(KtUnsupportedAnnotationValue::class.java.simpleName)
is KtErrorValue -> append("<ERROR>")
}
}