translator: quick fix for kfunction
This commit is contained in:
@@ -4,15 +4,14 @@ import com.intellij.psi.tree.IElementType
|
|||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.kotlinnative.translator.llvm.types.LLVMIntType
|
import org.kotlinnative.translator.llvm.types.LLVMIntType
|
||||||
import org.kotlinnative.translator.llvm.types.LLVMType
|
import org.kotlinnative.translator.llvm.types.LLVMType
|
||||||
import kotlin.reflect.KFunction0
|
|
||||||
|
|
||||||
class LLVMBuilder {
|
class LLVMBuilder {
|
||||||
private var llvmCode: StringBuilder = StringBuilder()
|
private var llvmCode: StringBuilder = StringBuilder()
|
||||||
private var variableCount = 0
|
private var variableCount = 0
|
||||||
|
|
||||||
fun getNewVariable(type: KFunction0<LLVMType>?): LLVMVariable {
|
fun getNewVariable(type: LLVMType?): LLVMVariable {
|
||||||
variableCount++
|
variableCount++
|
||||||
return LLVMVariable("%var$variableCount", type?.invoke())
|
return LLVMVariable("%var$variableCount", type)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addLLVMCode(code: String) {
|
fun addLLVMCode(code: String) {
|
||||||
@@ -28,7 +27,7 @@ class LLVMBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun addPrimitiveBinaryOperation(operation: IElementType, firstOp: LLVMVariable, secondOp: LLVMVariable): LLVMVariable {
|
fun addPrimitiveBinaryOperation(operation: IElementType, firstOp: LLVMVariable, secondOp: LLVMVariable): LLVMVariable {
|
||||||
val newVar = getNewVariable(::LLVMIntType)
|
val newVar = getNewVariable(LLVMIntType())
|
||||||
val llvmExpression = when (operation) {
|
val llvmExpression = when (operation) {
|
||||||
KtTokens.PLUS -> firstOp.type!!.operatorPlus(newVar, firstOp, secondOp)
|
KtTokens.PLUS -> firstOp.type!!.operatorPlus(newVar, firstOp, secondOp)
|
||||||
KtTokens.MINUS -> firstOp.type!!.operatorMinus(newVar, firstOp, secondOp)
|
KtTokens.MINUS -> firstOp.type!!.operatorMinus(newVar, firstOp, secondOp)
|
||||||
|
|||||||
Reference in New Issue
Block a user