translator: add while block, tests
This commit is contained in:
@@ -856,7 +856,10 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va
|
||||
successExpression = codeBuilder.loadAndGetVariable(successExpression)
|
||||
}
|
||||
|
||||
codeBuilder.storeVariable(resultVariable, successExpression ?: return)
|
||||
if (successExpression != null) {
|
||||
codeBuilder.storeVariable(resultVariable, successExpression)
|
||||
}
|
||||
|
||||
codeBuilder.addUnconditionalJump(endLabel)
|
||||
codeBuilder.addComment("end last condition item")
|
||||
}
|
||||
@@ -870,7 +873,7 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va
|
||||
val targetExpression = evaluateExpression(whenExpression, scopeDepth + 1)!!
|
||||
val resultVariable = codeBuilder.getNewVariable(expressionType, pointer = 1)
|
||||
|
||||
if (expressionType !is LLVMVoidType) {
|
||||
if (expressionType !is LLVMVoidType && expressionType !is LLVMNullType) {
|
||||
codeBuilder.allocStackPointedVarAsValue(resultVariable)
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
when_block_test1_Int(0) == 1
|
||||
when_block_test1_Int(1) == 0
|
||||
when_block_test1_Int(2) == 0
|
||||
@@ -0,0 +1,9 @@
|
||||
|
||||
fun when_block_test1(i: Int): Boolean {
|
||||
when (i) {
|
||||
0 -> return true
|
||||
1 -> return false
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user