From a8e843a10c5b6f82499707da06f3629845429636 Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Thu, 11 Aug 2016 12:42:33 +0300 Subject: [PATCH] translator: fix variable defenition via another variable --- .../main/kotlin/org/kotlinnative/translator/BlockCodegen.kt | 2 +- .../src/test/kotlin/tests/input/variables_assigment_1.txt | 1 + .../src/test/kotlin/tests/kotlin/variables_assigment_1.kt | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 translator/src/test/kotlin/tests/input/variables_assigment_1.txt create mode 100644 translator/src/test/kotlin/tests/kotlin/variables_assigment_1.kt diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt index f6391305c5d..ede35f2888e 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt @@ -911,7 +911,7 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va when (assignExpression) { is LLVMVariable -> { - if (assignExpression.pointer == 0) { + if (assignExpression.pointer < 2) { val allocVar = variableManager.receiveVariable(identifier, assignExpression.type, LLVMRegisterScope(), pointer = 0) codeBuilder.allocStackVar(allocVar) allocVar.pointer++ diff --git a/translator/src/test/kotlin/tests/input/variables_assigment_1.txt b/translator/src/test/kotlin/tests/input/variables_assigment_1.txt new file mode 100644 index 00000000000..065f58fb725 --- /dev/null +++ b/translator/src/test/kotlin/tests/input/variables_assigment_1.txt @@ -0,0 +1 @@ +variables_assigment_1_Int(56789) == 56789 diff --git a/translator/src/test/kotlin/tests/kotlin/variables_assigment_1.kt b/translator/src/test/kotlin/tests/kotlin/variables_assigment_1.kt new file mode 100644 index 00000000000..2306ec0805c --- /dev/null +++ b/translator/src/test/kotlin/tests/kotlin/variables_assigment_1.kt @@ -0,0 +1,6 @@ +fun variables_assigment_1(x: Int): Int { + var z = x + z++ + return x +} +