KT-56843 [SLC] Support unsafe property initializers
This commit is contained in:
committed by
Space Team
parent
6b62499c85
commit
85b5a4521e
+9
@@ -5,12 +5,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.descriptors.components
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationValue
|
||||
import org.jetbrains.kotlin.analysis.api.components.KtCompileTimeConstantProvider
|
||||
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.base.KtConstantValue
|
||||
import org.jetbrains.kotlin.analysis.api.components.KtConstantEvaluationMode
|
||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtAnnotationValue
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
@@ -19,6 +21,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
|
||||
|
||||
internal class KtFe10CompileTimeConstantProvider(
|
||||
override val analysisSession: KtFe10AnalysisSession
|
||||
) : KtCompileTimeConstantProvider(), Fe10KtAnalysisSessionComponent {
|
||||
@@ -38,4 +41,10 @@ internal class KtFe10CompileTimeConstantProvider(
|
||||
}
|
||||
return constant?.toConstantValue(TypeUtils.NO_EXPECTED_TYPE)?.toKtConstantValue()
|
||||
}
|
||||
|
||||
override fun evaluateAsAnnotationValue(expression: KtExpression): KtAnnotationValue? {
|
||||
val bindingContext = analysisContext.analyze(expression)
|
||||
val constant = ConstantExpressionEvaluator.getPossiblyErrorConstant(expression, bindingContext)
|
||||
return constant?.toConstantValue(TypeUtils.NO_EXPECTED_TYPE)?.toKtAnnotationValue(analysisContext)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user