Skip to content

Commit 4fde4c7

Browse files
BlaBlaHumanSpace Team
authored andcommitted
[Analysis API] Clean up FirCompileTimeConstantEvaluator
1 parent 3b95c0a commit 4fde4c7

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import org.jetbrains.kotlin.analysis.api.base.KaConstantValue
99
import org.jetbrains.kotlin.analysis.api.impl.base.*
1010
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries
1111
import org.jetbrains.kotlin.fir.FirElement
12-
import org.jetbrains.kotlin.fir.FirEvaluatorResult
1312
import org.jetbrains.kotlin.fir.FirSession
14-
import org.jetbrains.kotlin.fir.expressions.*
13+
import org.jetbrains.kotlin.fir.declarations.evaluateAs
14+
import org.jetbrains.kotlin.fir.expressions.FirExpression
15+
import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression
16+
import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression
1517
import org.jetbrains.kotlin.fir.psi
1618
import org.jetbrains.kotlin.fir.references.toResolvedVariableSymbol
1719
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
@@ -53,26 +55,22 @@ internal object FirCompileTimeConstantEvaluator {
5355
}
5456
}
5557

56-
@OptIn(PrivateConstantEvaluatorAPI::class)
5758
fun evaluate(
5859
fir: FirElement?,
5960
firSession: FirSession
60-
): FirLiteralExpression? {
61-
val evaluatedResult = when (fir) {
62-
is FirPropertyAccessExpression -> {
63-
when (val referredVariable = fir.calleeReference.toResolvedVariableSymbol()) {
64-
is FirPropertySymbol -> referredVariable.evaluateRecursionAware(fir, firSession)
65-
is FirFieldSymbol -> referredVariable.evaluateRecursionAware(fir, firSession)
66-
else -> null
67-
}
61+
): FirLiteralExpression? = when (fir) {
62+
is FirPropertyAccessExpression -> {
63+
when (val referredVariable = fir.calleeReference.toResolvedVariableSymbol()) {
64+
is FirPropertySymbol -> referredVariable.evaluateRecursionAware(fir, firSession)
65+
is FirFieldSymbol -> referredVariable.evaluateRecursionAware(fir, firSession)
66+
else -> null
6867
}
69-
is FirExpression -> FirExpressionEvaluator.evaluateExpression(fir, firSession)
70-
else -> null
71-
} as? FirEvaluatorResult.Evaluated ?: return null
72-
73-
return evaluatedResult.result as? FirLiteralExpression
68+
}
69+
is FirExpression -> fir.evaluateAs<FirLiteralExpression>(firSession)
70+
else -> null
7471
}
7572

73+
7674
fun evaluateAsKtConstantValue(
7775
fir: FirElement,
7876
firSession: FirSession
@@ -118,13 +116,12 @@ internal object FirCompileTimeConstantEvaluator {
118116
}
119117
}
120118

121-
@OptIn(PrivateConstantEvaluatorAPI::class)
122119
private fun FirVariableSymbol<*>.evaluateRecursionAware(
123120
expressionToEvaluate: FirExpression,
124121
firSession: FirSession
125-
): FirEvaluatorResult? =
122+
): FirLiteralExpression? =
126123
withTrackingVariableEvaluation(this) {
127-
FirExpressionEvaluator.evaluateExpression(expressionToEvaluate, firSession)
124+
expressionToEvaluate.evaluateAs<FirLiteralExpression>(firSession)
128125
}
129126

130127
private fun ConstantValueKind.adjustType(value: Any?): Any? {

0 commit comments

Comments
 (0)