diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt index 53f3396646b..6efaacaf34f 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt @@ -729,7 +729,8 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va } val result = firstOp as LLVMVariable - codeBuilder.storeVariable(result, secondNativeOp) + val sourceArgument = if (result.pointer == secondOp.pointer + 1) secondOp else secondNativeOp + codeBuilder.storeVariable(result, sourceArgument) return result } else -> addPrimitiveReferenceOperation(referenceName!!, firstOp, secondNativeOp) diff --git a/translator/src/test/kotlin/tests/input/class_reassigment_1.txt b/translator/src/test/kotlin/tests/input/class_reassigment_1.txt new file mode 100644 index 00000000000..80065f860c6 --- /dev/null +++ b/translator/src/test/kotlin/tests/input/class_reassigment_1.txt @@ -0,0 +1 @@ +class_reassigment_1() == 567 diff --git a/translator/src/test/kotlin/tests/kotlin/class_reassigment_1.kt b/translator/src/test/kotlin/tests/kotlin/class_reassigment_1.kt new file mode 100644 index 00000000000..3d843b78ea3 --- /dev/null +++ b/translator/src/test/kotlin/tests/kotlin/class_reassigment_1.kt @@ -0,0 +1,12 @@ +class class_reassigment_1_class(val field: Int) + +fun class_reassigment_1_base() : class_reassigment_1_class{ + val instance = class_reassigment_1_class(567) + return instance +} + +fun class_reassigment_1(): Int{ + var instance = class_reassigment_1_class(123) + instance = class_reassigment_1_base() + return instance.field +} \ No newline at end of file