[Native] Support evaluation of const intrinsics for K2

#KT-56023
#KT-55469 Fixed
This commit is contained in:
Ivan Kylchik
2023-02-03 14:53:15 +01:00
committed by Space Team
parent 5d5582d201
commit e981b1f958
34 changed files with 264 additions and 60 deletions
@@ -417,9 +417,14 @@ class Fir2IrConverter(
companion object {
private fun evaluateConstants(irModuleFragment: IrModuleFragment) {
val firModuleDescriptor = irModuleFragment.descriptor as? FirModuleDescriptor
val languageVersionSettings = firModuleDescriptor?.session?.languageVersionSettings
val intrinsicConstEvaluation = languageVersionSettings?.supportsFeature(LanguageFeature.IntrinsicConstEvaluation) == true
val interpreter = IrInterpreter(irModuleFragment.irBuiltins)
val mode = if (intrinsicConstEvaluation) EvaluationMode.ONLY_INTRINSIC_CONST else EvaluationMode.ONLY_BUILTINS
irModuleFragment.files.forEach {
it.transformChildren(IrConstTransformer(interpreter, it, mode = EvaluationMode.ONLY_BUILTINS), null)
it.transformChildren(IrConstTransformer(interpreter, it, mode = mode), null)
}
}