translator: fix returning variable in if expressions, add IntArray.plus(IntArray)

This commit is contained in:
Alexey Stepanov
2016-08-10 19:18:25 +03:00
parent 6c509d0220
commit fb2e23913e
4 changed files with 31 additions and 8 deletions
@@ -867,13 +867,15 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va
codeBuilder.addCondition(conditionResult, thenLabel, elseLabel)
codeBuilder.markWithLabel(thenLabel)
val thenResultExpression = evaluateExpression(thenExpression, scopeDepth + 1)
codeBuilder.storeVariable(resultVariable, thenResultExpression ?: return null)
val thenResultExpression = evaluateExpression(thenExpression, scopeDepth + 1) ?: return null
val thenResultNativeExpression = codeBuilder.receiveNativeValue(thenResultExpression)
codeBuilder.storeVariable(resultVariable, thenResultNativeExpression)
codeBuilder.addUnconditionalJump(endLabel)
codeBuilder.markWithLabel(elseLabel)
val elseResultExpression = evaluateExpression(elseExpression, scopeDepth + 1)
codeBuilder.storeVariable(resultVariable, elseResultExpression ?: return null)
val elseResultExpression = evaluateExpression(elseExpression, scopeDepth + 1) ?: return null
val elseResultNativeExpression = codeBuilder.receiveNativeValue(elseResultExpression)
codeBuilder.storeVariable(resultVariable, elseResultNativeExpression)
codeBuilder.addUnconditionalJump(endLabel)
codeBuilder.markWithLabel(endLabel)
return resultVariable
@@ -1,2 +1,4 @@
if_expression_1_Int(56) == 2323
if_expression_1_Int(-58) == 678934
if_expression_1_variable_Int(100) == 5
if_expression_1_variable_Int(-100) == 7
@@ -1,3 +1,9 @@
fun if_expression_1(x: Int): Int{
return if (x > 55) 2323 else 678934
}
fun if_expression_1_variable(x: Int): Int{
val first = 5
val second = 7
return if (x > 55) first else second
}