From d8ab5e9e5f5c5d2127527c75854b4d408d36520d Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Thu, 21 Jul 2016 14:00:03 +0300 Subject: [PATCH] fix return type in when and if expressions, fix if expressions result variable --- .../2.9/taskArtifacts/cache.properties.lock | Bin 17 -> 17 bytes .../.gradle/2.9/taskArtifacts/fileHashes.bin | Bin 26187 -> 32417 bytes .../2.9/taskArtifacts/fileSnapshots.bin | Bin 172634 -> 172634 bytes .../2.9/taskArtifacts/outputFileStates.bin | Bin 18932 -> 19022 bytes .../2.9/taskArtifacts/taskArtifacts.bin | Bin 24342 -> 24342 bytes .../kotlinnative/translator/BlockCodegen.kt | 26 ++++++++++-------- .../translator/llvm/LLVMBuilder.kt | 2 +- .../translator/llvm/generators.kt | 6 ++-- .../kotlin/tests/input/if_expression_1.txt | 2 ++ .../src/test/kotlin/tests/kotlin/if_1.kt | 6 ++-- .../kotlin/tests/kotlin/if_expression_1.kt | 3 ++ 11 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 translator/src/test/kotlin/tests/input/if_expression_1.txt create mode 100644 translator/src/test/kotlin/tests/kotlin/if_expression_1.kt diff --git a/translator/.gradle/2.9/taskArtifacts/cache.properties.lock b/translator/.gradle/2.9/taskArtifacts/cache.properties.lock index d061c564a6c362c0fa68d0ea20f096102a1bc779..a5855757139968342c2921f39312bffabfa8f667 100644 GIT binary patch literal 17 VcmZSnTh{Pwzt;N`3}C>r0RTmW1~C8t literal 17 VcmZSnTh{Pwzt;N`3}C?g763)R25kTU diff --git a/translator/.gradle/2.9/taskArtifacts/fileHashes.bin b/translator/.gradle/2.9/taskArtifacts/fileHashes.bin index 697fb99ea5c7809f0b0d30517c410f84fd1d6cd5..3908f1d87e5fbe51eb84659fc5447ba11d660856 100644 GIT binary patch delta 4805 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 auWadmDCkKL%O5HAqrWu_tFfV;$NvCmwR5-t delta 484 zcmYk2JxD@f6o$RkAmm_!-OvAfHN7`~@{G5MOwcT8R}`7!x_8TXswc}Ibd$-*hhOv4A$QFZFbxSTk0WznNP;ZC6JW~jOA z&^-I-dPGRxB(}X-Ja}`M_N}Ag%R%sq==eFT5<@}K(2_XpvW}XpT?9C)0Ug$$hOHpO zWiW~NposDm#S(YK2f;%O%@9XFLj?zpsO5BwT{DSjvk># z7|KMAc!_YZDBX)XaT86TPo9Z!9L5-0ggs7s#9ds6Hgh#%`!bAO(dgWdw+mX=CS{*) zdq1BK`Pulw*=uU!#9|Rjwzs*$@Mrc_EH5#9>kd?k>9NPh=p~He+-OyK!Dlfw7_{Y5 G#Qq1?c!n+j diff --git a/translator/.gradle/2.9/taskArtifacts/fileSnapshots.bin b/translator/.gradle/2.9/taskArtifacts/fileSnapshots.bin index d791606d08d563a885eab2abd0afd7b1f0353cea..0f278fa2f3d93007f301a1678a2199f67bdf2d80 100644 GIT binary patch delta 5828 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 diff --git a/translator/.gradle/2.9/taskArtifacts/outputFileStates.bin b/translator/.gradle/2.9/taskArtifacts/outputFileStates.bin index 90ce29235990d584ce56c6f5505d6d052b1706bc..3f7c92fb6c453757eac5e04488cb2cd33a820fa2 100644 GIT binary patch delta 142 zcmew|nep5d#trrojDnLLBvxqfJ(~S+P4%=`1~Bjv`VR#Hg$_v-4;4>A#67=Eejt${ z;O)Kg=;Jtbm|}y;4wCVVt2QeB72jx(Ew(wpV+rHr6CQjVs^&q7`cnFrCLiz+lm@tVBBQ=DJ@`kSSV9-ASiGKc{HTIn+U delta 38 wcmV+>0NMY}lmYaU0kA(90S=Qu7^ssN8DNu;8CL;fu_65zu`sh1vrtH+0T?n4F8}}l diff --git a/translator/.gradle/2.9/taskArtifacts/taskArtifacts.bin b/translator/.gradle/2.9/taskArtifacts/taskArtifacts.bin index 8f71b7520c0aa34ad5d35360dd3bc47ea77f10c4..d37c5fe65603fdb471c85e5562dc6f6a6f6a3ccb 100644 GIT binary patch delta 260 zcmbQXk8#>Q#tE{lJPZsBD<_J{ZFEqRV2VuJoFT#PD5u20z^KIJ`=)u@z4j|se8<{r z+287&PWtk6wWHJQ{gaJ-Y=w5}XXNLm>X#O$7U_HEm*iyTO`hj1IeDHB|72;O8BB}@ zljlXrNEI?yDd_!EUU+Q=gMjCh&G{RY>bAuw@Eg@CPWJY;6WWf=khINvq82eu){kY^ zsb^qnI%5oU%tatR3B<>kS2On<((#*mr|0zPzN+8fg(b6}J$HM*v3t$r2_d4BdE%sm dPcvdORdVv)SjEk5u?CEj`Qq7Gt}rlO2LQyiVZs0a delta 211 zcmbQXk8#>Q#tE{rTNxM_)&nsRc&h-37honsWEuklqx(iH9SJ5Mp3NB&?2ht=KoLWx zdD8E$hyMxXJQ^s=viFU&Y`1e evaluateCallableReferenceExpression(expr) is KtDotQualifiedExpression -> evaluateDotExpression(expr, scopeDepth) is KtReferenceExpression -> evaluateReferenceExpression(expr, scopeDepth) - is KtIfExpression -> evaluateIfOperator(expr.firstChild as LeafPsiElement, scopeDepth + 1, true) + is KtIfExpression -> evaluateIfOperator(expr.firstChild as LeafPsiElement, scopeDepth + 1, expr) is KtStringTemplateExpression -> evaluateStringTemplateExpression(expr) is KtReturnExpression -> evaluateReturnInstruction(expr.firstChild, scopeDepth) is PsiWhiteSpace -> null @@ -426,7 +426,7 @@ abstract class BlockCodegen(open val state: TranslationState, open val variableM private fun evaluateLeafPsiElement(element: LeafPsiElement, scopeDepth: Int): LLVMVariable? { return when (element.elementType) { KtTokens.RETURN_KEYWORD -> evaluateReturnInstruction(element, scopeDepth) - KtTokens.IF_KEYWORD -> evaluateIfOperator(element, scopeDepth, containReturn = false) + KtTokens.IF_KEYWORD -> evaluateIfOperator(element, scopeDepth, ifExpression = null) KtTokens.WHILE_KEYWORD -> evaluateWhileOperator(element, scopeDepth) else -> null } @@ -458,11 +458,13 @@ abstract class BlockCodegen(open val state: TranslationState, open val variableM private fun evaluateWhenExpression(expr: KtWhenExpression, scopeDepth: Int): LLVMVariable? { codeBuilder.addComment("start when expression") val whenExpression = expr.subjectExpression + val kotlinType = state.bindingContext.get(BindingContext.EXPRESSION_TYPE_INFO, expr)!!.type!! + val expressionType = LLVMMapStandardType("type", kotlinType, LLVMVariableScope()).type val targetExpression = evaluateExpression(whenExpression, scopeDepth + 1)!! - val resultVariable = codeBuilder.getNewVariable(LLVMIntType(), pointer = 1) - codeBuilder.allocStackVarInPointer(resultVariable) + val resultVariable = codeBuilder.getNewVariable(expressionType, pointer = 1) + codeBuilder.allocStackPointedVarAsValue(resultVariable) var nextLabel = codeBuilder.getNewLabel(prefix = "when_start") val endLabel = codeBuilder.getNewLabel(prefix = "when_end") @@ -507,7 +509,7 @@ abstract class BlockCodegen(open val state: TranslationState, open val variableM return null } - private fun evaluateIfOperator(element: LeafPsiElement, scopeDepth: Int, containReturn: Boolean): LLVMVariable? { + private fun evaluateIfOperator(element: LeafPsiElement, scopeDepth: Int, ifExpression: KtIfExpression?): LLVMVariable? { var getBrackets = element.getNextSiblingIgnoringWhitespaceAndComments() ?: return null val condition = getBrackets.getNextSiblingIgnoringWhitespaceAndComments() ?: return null getBrackets = condition.getNextSiblingIgnoringWhitespaceAndComments() ?: return null @@ -515,16 +517,18 @@ abstract class BlockCodegen(open val state: TranslationState, open val variableM val elseKeyword = thenExpression.getNextSiblingIgnoringWhitespaceAndComments() ?: return null val elseExpression = elseKeyword.getNextSiblingIgnoringWhitespaceAndComments() ?: return null - return when (containReturn) { - false -> executeIfBlock(condition.firstChild as KtBinaryExpression, thenExpression.firstChild, elseExpression.firstChild, scopeDepth + 1) - true -> executeIfExpression(condition.firstChild as KtBinaryExpression, thenExpression.firstChild, elseExpression.firstChild, scopeDepth + 1) + return when (ifExpression) { + null -> executeIfBlock(condition.firstChild as KtBinaryExpression, thenExpression.firstChild, elseExpression.firstChild, scopeDepth + 1) + else -> executeIfExpression(condition.firstChild as KtBinaryExpression, thenExpression.firstChild, elseExpression.firstChild, ifExpression, scopeDepth + 1) } } - private fun executeIfExpression(condition: KtBinaryExpression, thenExpression: PsiElement, elseExpression: PsiElement?, scopeDepth: Int): LLVMVariable? { + private fun executeIfExpression(condition: KtBinaryExpression, thenExpression: PsiElement, elseExpression: PsiElement?, ifExpression: KtIfExpression, scopeDepth: Int): LLVMVariable? { val conditionResult: LLVMVariable = evaluateBinaryExpression(condition, scopeDepth + 1) - val resultVariable = codeBuilder.getNewVariable(LLVMIntType(), pointer = 1) - codeBuilder.allocStackVar(resultVariable) + val kotlinType = state.bindingContext.get(BindingContext.EXPRESSION_TYPE_INFO, ifExpression)!!.type!! + val expressionType = LLVMMapStandardType("type", kotlinType, LLVMVariableScope()).type + val resultVariable = codeBuilder.getNewVariable(expressionType, pointer = 1) + codeBuilder.allocStackPointedVarAsValue(resultVariable) val thenLabel = codeBuilder.getNewLabel(prefix = "if") val elseLabel = codeBuilder.getNewLabel(prefix = "if") val endLabel = codeBuilder.getNewLabel(prefix = "if") diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt index f2b1c694ffa..ed733d2cfe7 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt @@ -162,7 +162,7 @@ class LLVMBuilder(val arm: Boolean) { localCode.appendln("$target = alloca ${target.getType()}, align ${target.type.align}") } - fun allocStackVarInPointer(target: LLVMVariable) { + fun allocStackPointedVarAsValue(target: LLVMVariable) { localCode.appendln("$target = alloca ${target.type}, align ${target.type.align}") } diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt index deedb3439f2..5b251eb5682 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt @@ -20,6 +20,6 @@ fun LLVMMapStandardType(name: String, type: KotlinType, scope: LLVMScope = LLVMR type.toString() == "Char" -> LLVMVariable(name, LLVMCharType(), name, scope) type.toString() == "Boolean" -> LLVMVariable(name, LLVMBooleanType(), name, scope) type.isUnit() -> LLVMVariable("", LLVMVoidType(), name, scope) - type.isMarkedNullable -> LLVMVariable(name, LLVMReferenceType("${type.toString().dropLast(1)}"), name, scope, pointer = 1) - else -> LLVMVariable(name, LLVMReferenceType("$type"), name, scope, pointer = 1) -} + type.isMarkedNullable -> LLVMVariable(name, LLVMReferenceType(type.toString().dropLast(1)), name, scope, pointer = 1) + else -> LLVMVariable(name, LLVMReferenceType(type.toString()), name, scope, pointer = 1) +} \ No newline at end of file diff --git a/translator/src/test/kotlin/tests/input/if_expression_1.txt b/translator/src/test/kotlin/tests/input/if_expression_1.txt new file mode 100644 index 00000000000..0bee0da933d --- /dev/null +++ b/translator/src/test/kotlin/tests/input/if_expression_1.txt @@ -0,0 +1,2 @@ +if_expression_1(56) == 2323 +if_expression_1(-58) == 678934 diff --git a/translator/src/test/kotlin/tests/kotlin/if_1.kt b/translator/src/test/kotlin/tests/kotlin/if_1.kt index a67f222497f..ba38538844c 100644 --- a/translator/src/test/kotlin/tests/kotlin/if_1.kt +++ b/translator/src/test/kotlin/tests/kotlin/if_1.kt @@ -8,11 +8,11 @@ fun if_test_1(x: Int): Int { return a } -class MyClass2(i: Int) +class MyClass_if_1(i: Int) fun if_test_null(x: Int): Int { - val y: MyClass2? = null + val y: MyClass_if_1? = null if (y == null) { return 1 } else { @@ -21,7 +21,7 @@ fun if_test_null(x: Int): Int { } fun if_test_null_2(x: Int): Int { - val y: MyClass2? = MyClass2(1) + val y: MyClass_if_1? = MyClass_if_1(1) if (y == null) { return 1 diff --git a/translator/src/test/kotlin/tests/kotlin/if_expression_1.kt b/translator/src/test/kotlin/tests/kotlin/if_expression_1.kt new file mode 100644 index 00000000000..7513e688fd8 --- /dev/null +++ b/translator/src/test/kotlin/tests/kotlin/if_expression_1.kt @@ -0,0 +1,3 @@ +fun if_expression_1(x: Int): Int{ + return if (x > 55) 2323 else 678934 +} \ No newline at end of file