FIR IDE/UAST: add KtCompileTimeConstantProvider with evaluate API
This commit is contained in:
+3
-4
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitIntTypeRef
|
||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue
|
||||
import org.jetbrains.kotlin.types.ConstantValueKind
|
||||
|
||||
/**
|
||||
@@ -25,10 +24,10 @@ import org.jetbrains.kotlin.types.ConstantValueKind
|
||||
class FirCompileTimeConstantEvaluator {
|
||||
|
||||
// TODO: Handle boolean operators, const property loading, class reference, array, annotation values, etc.
|
||||
fun evaluate(expression: FirExpression): ConstantValue<*>? =
|
||||
fun evaluate(expression: FirExpression): FirConstExpression<*>? =
|
||||
when (expression) {
|
||||
is FirConstExpression<*> -> expression.value as? ConstantValue<*>
|
||||
is FirFunctionCall -> evaluate(expression)?.value as? ConstantValue<*>
|
||||
is FirConstExpression<*> -> expression
|
||||
is FirFunctionCall -> evaluate(expression)
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user