Analysis API: rename KtConstantValue -> KtAnnotationValue as it is annotation specific
This commit is contained in:
+3
-2
@@ -5,6 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.components
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationValue
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtErrorValue
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.FirCompileTimeConstantEvaluator
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir
|
||||
@@ -12,7 +14,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirEle
|
||||
import org.jetbrains.kotlin.analysis.api.components.KtCompileTimeConstantProvider
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.KtFirConstantValueConverter
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenBranch
|
||||
@@ -23,7 +24,7 @@ internal class KtFirCompileTimeConstantProvider(
|
||||
override val token: ValidityToken,
|
||||
) : KtCompileTimeConstantProvider(), KtFirAnalysisSessionComponent {
|
||||
|
||||
override fun evaluate(expression: KtExpression): KtConstantValue? = withValidityAssertion {
|
||||
override fun evaluate(expression: KtExpression): KtAnnotationValue? = withValidityAssertion {
|
||||
when (val fir = expression.getOrBuildFir(firResolveState)) {
|
||||
is FirExpression -> {
|
||||
try {
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.analysis.api.fir.evaluate
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationValue
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
@@ -37,7 +37,7 @@ internal object FirCompileTimeConstantEvaluator {
|
||||
else -> null
|
||||
}
|
||||
|
||||
fun evaluateAsKtConstantExpression(expression: FirExpression): KtConstantValue? {
|
||||
fun evaluateAsKtConstantExpression(expression: FirExpression): KtAnnotationValue? {
|
||||
val evaluated = evaluate(expression) ?: return null
|
||||
return KtFirConstantValueConverter.toConstantValue(evaluated)
|
||||
}
|
||||
|
||||
+13
-14
@@ -5,8 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.evaluate
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtNamedConstantValue
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.*
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
|
||||
@@ -30,21 +29,21 @@ internal object KtFirConstantValueConverter {
|
||||
argumentMapping.map { (name, expression) ->
|
||||
KtNamedConstantValue(
|
||||
name,
|
||||
expression.convertConstantExpression(session) ?: KtUnsupportedConstantValue
|
||||
expression.convertConstantExpression(session) ?: KtUnsupportedAnnotationValue
|
||||
)
|
||||
}
|
||||
|
||||
fun <T> toConstantValue(
|
||||
firConstExpression: FirConstExpression<T>,
|
||||
): KtLiteralConstantValue<T> =
|
||||
): KtLiteralAnnotationValue<T> =
|
||||
firConstExpression.convertConstantExpression()
|
||||
|
||||
private fun <T> FirConstExpression<T>.convertConstantExpression(): KtLiteralConstantValue<T> =
|
||||
KtLiteralConstantValue(kind, value, psi as? KtElement)
|
||||
private fun <T> FirConstExpression<T>.convertConstantExpression(): KtLiteralAnnotationValue<T> =
|
||||
KtLiteralAnnotationValue(kind, value, psi as? KtElement)
|
||||
|
||||
private fun Collection<FirExpression>.convertConstantExpression(
|
||||
session: FirSession,
|
||||
): Collection<KtConstantValue> =
|
||||
): Collection<KtAnnotationValue> =
|
||||
mapNotNull { it.convertConstantExpression(session) }
|
||||
|
||||
// Refer to KtLightAnnotationParameterList#checkIfToArrayConversionExpected
|
||||
@@ -62,12 +61,12 @@ internal object KtFirConstantValueConverter {
|
||||
}
|
||||
}
|
||||
|
||||
private fun Collection<KtConstantValue>.toArrayConstantValueIfNecessary(sourcePsi: KtElement?): KtConstantValue? {
|
||||
private fun Collection<KtAnnotationValue>.toArrayConstantValueIfNecessary(sourcePsi: KtElement?): KtAnnotationValue? {
|
||||
val valueArgument = if (sourcePsi is ValueArgument) sourcePsi else
|
||||
(sourcePsi?.parents?.firstOrNull { it is ValueArgument } as? ValueArgument)
|
||||
val wrap = valueArgument?.arrayConversionExpected() ?: false
|
||||
return if (wrap) {
|
||||
KtArrayConstantValue(this, sourcePsi)
|
||||
KtArrayAnnotationValue(this, sourcePsi)
|
||||
} else {
|
||||
singleOrNull()
|
||||
}
|
||||
@@ -76,12 +75,12 @@ internal object KtFirConstantValueConverter {
|
||||
fun toConstantValue(
|
||||
firExpression: FirExpression,
|
||||
session: FirSession,
|
||||
): KtConstantValue? =
|
||||
): KtAnnotationValue? =
|
||||
firExpression.convertConstantExpression(session)
|
||||
|
||||
private fun FirExpression.convertConstantExpression(
|
||||
session: FirSession,
|
||||
): KtConstantValue? {
|
||||
): KtAnnotationValue? {
|
||||
return when (this) {
|
||||
is FirConstExpression<*> -> convertConstantExpression()
|
||||
is FirNamedArgumentExpression -> {
|
||||
@@ -95,7 +94,7 @@ internal object KtFirConstantValueConverter {
|
||||
}
|
||||
is FirArrayOfCall -> {
|
||||
// Desugared collection literals.
|
||||
KtArrayConstantValue(argumentList.arguments.convertConstantExpression(session), psi as? KtElement)
|
||||
KtArrayAnnotationValue(argumentList.arguments.convertConstantExpression(session), psi as? KtElement)
|
||||
}
|
||||
is FirFunctionCall -> {
|
||||
val reference = calleeReference as? FirResolvedNamedReference ?: return null
|
||||
@@ -107,7 +106,7 @@ internal object KtFirConstantValueConverter {
|
||||
argumentMapping?.entries?.forEach { (arg, param) ->
|
||||
resultMap[param.name.asString()] = arg
|
||||
}
|
||||
KtAnnotationConstantValue(
|
||||
KtAnnotationAnnotationValue(
|
||||
resolvedSymbol.callableId.classId,
|
||||
toNamedConstantValue(resultMap, session),
|
||||
psi as? KtCallElement
|
||||
@@ -127,7 +126,7 @@ internal object KtFirConstantValueConverter {
|
||||
val reference = calleeReference as? FirResolvedNamedReference ?: return null
|
||||
when (val resolvedSymbol = reference.resolvedSymbol) {
|
||||
is FirEnumEntrySymbol -> {
|
||||
KtEnumEntryConstantValue(resolvedSymbol.callableId, psi as? KtElement)
|
||||
KtEnumEntryAnnotationValue(resolvedSymbol.callableId, psi as? KtElement)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
|
||||
+2
-3
@@ -9,12 +9,11 @@ import org.jetbrains.kotlin.analysis.api.fir.annotations.mapAnnotationParameters
|
||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.FirCompileTimeConstantEvaluator
|
||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.KtFirConstantValueConverter
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValueRenderer
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtUnsupportedConstantValue
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtUnsupportedAnnotationValue
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
|
||||
@@ -59,7 +58,7 @@ private fun renderAndSortAnnotationArguments(descriptor: FirAnnotation, session:
|
||||
private fun renderConstant(value: FirExpression, useSiteSession: FirSession): String {
|
||||
val evaluated = FirCompileTimeConstantEvaluator.evaluate(value)
|
||||
val constantValue = KtFirConstantValueConverter.toConstantValue(evaluated ?: value, useSiteSession)
|
||||
?: KtUnsupportedConstantValue
|
||||
?: KtUnsupportedAnnotationValue
|
||||
|
||||
return KtConstantValueRenderer.render(constantValue)
|
||||
}
|
||||
|
||||
-2
@@ -9,7 +9,6 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.KtFirConstantValueConverter
|
||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirMemberPropertySymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.createSignature
|
||||
@@ -20,7 +19,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.CanNotCreateSymbolPointerForLocalLibraryDeclarationException
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
|
||||
|
||||
-2
@@ -9,7 +9,6 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.KtFirConstantValueConverter
|
||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirJavaSyntheticPropertySymbolPointer
|
||||
@@ -17,7 +16,6 @@ import org.jetbrains.kotlin.analysis.api.fir.utils.asKtInitializerValue
|
||||
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
||||
import org.jetbrains.kotlin.analysis.api.fir.utils.firRef
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
|
||||
Reference in New Issue
Block a user