added processing of the BLOCK_BODY, for Unit function IR doesn't contein RETURN:

FUN public fun bar(i: kotlin.Int): kotlin.Unit
      BLOCK_BODY
for code:
fun bar(i:Int):Unit {}
This commit is contained in:
Vasily Levchenko
2016-10-31 21:31:32 +03:00
parent df9bf60c30
commit ecdac4190c
@@ -2,6 +2,7 @@ package org.jetbrains.kotlin.backend.native.llvm
import kotlin_native.interop.*
import llvm.*
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.impl.LazyClassReceiverParameterDescriptor
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
@@ -72,6 +73,13 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid
LLVMBuildRet(context.llvmBuilder, generator.load(thisValue!!, generator.tmpVariable()))
}
override fun visitBlockBody(body: IrBlockBody) {
super.visitBlockBody(body)
if (KotlinBuiltIns.isUnit(generator.currentFunction!!.returnType!!)) {
LLVMBuildRet(context.llvmBuilder, null)
}
}
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) {
evaluateCall(generator.tmpVariable(), expression)
}