Create map FunctionDescriptor to FunctionDeclaration

This commit is contained in:
Konstantin Anisimov
2016-12-23 11:27:12 +07:00
parent 303e6a7c79
commit ee184de993
2 changed files with 15 additions and 1 deletions
@@ -1,7 +1,9 @@
package org.jetbrains.kotlin.backend.konan.ir
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
@@ -16,6 +18,11 @@ class ModuleIndex(val module: IrModuleFragment) {
*/
val classes: Map<ClassId, IrClass>
/**
* Contains all functions declared in [module]
*/
val functions = mutableMapOf<FunctionDescriptor, IrFunction>()
init {
val map = mutableMapOf<ClassId, IrClass>()
@@ -33,6 +40,13 @@ class ModuleIndex(val module: IrModuleFragment) {
}
}
override fun visitFunction(declaration: IrFunction) {
super.visitFunction(declaration)
val functionDescriptor = declaration.descriptor
functions[functionDescriptor] = declaration
}
})
classes = map
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
class FunctionInlining(val context: Context) {
internal class FunctionInlining(val context: Context) {
fun inline(irFile: IrFile) {
irFile.acceptVoid(object : IrElementVisitorVoid {
override fun visitElement(element: IrElement) {