translator: fix returning variable in if expressions, add IntArray.plus(IntArray)
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user