Add method to evaluate constant expressions in ir module for fir2ir
This commit is contained in:
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
|
||||
import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator
|
||||
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
|
||||
import org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer
|
||||
import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
||||
import org.jetbrains.kotlin.fir.psi
|
||||
@@ -241,9 +242,7 @@ class Fir2IrConverter(
|
||||
descriptor.owner.parent = parentClass ?: continue
|
||||
}
|
||||
|
||||
irModuleFragment.files.forEach {
|
||||
it.transformChildren(IrConstTransformer(irModuleFragment), null)
|
||||
}
|
||||
evaluateConstants(irModuleFragment)
|
||||
|
||||
return Fir2IrResult(irModuleFragment, symbolTable, sourceManager, components)
|
||||
}
|
||||
|
||||
+4
@@ -23,6 +23,10 @@ import org.jetbrains.kotlin.ir.types.isArray
|
||||
import org.jetbrains.kotlin.ir.types.typeOrNull
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
|
||||
fun evaluateConstants(irModuleFragment: IrModuleFragment) {
|
||||
irModuleFragment.files.forEach { it.transformChildren(IrConstTransformer(irModuleFragment), null) }
|
||||
}
|
||||
|
||||
//TODO create abstract class that will be common for this and lowering
|
||||
class IrConstTransformer(irModuleFragment: IrModuleFragment) : IrElementTransformerVoid() {
|
||||
private val interpreter = IrInterpreter(irModuleFragment)
|
||||
|
||||
Reference in New Issue
Block a user