From 445a19ec26443474822d8797e91c1581ef15d5fb Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Mon, 18 Jul 2016 16:39:55 +0300 Subject: [PATCH] translator: fix *this transfer --- .../kotlinnative/translator/FunctionCodegen.kt | 5 ++++- .../test/kotlin/tests/input/simply_class_1.txt | 1 + .../test/kotlin/tests/kotlin/simply_class_1.kt | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 translator/src/test/kotlin/tests/input/simply_class_1.txt create mode 100644 translator/src/test/kotlin/tests/kotlin/simply_class_1.kt diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt index db14840d093..5fad34be043 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt @@ -194,9 +194,12 @@ class FunctionCodegen(val state: TranslationState, val variableManager: Variable val methodName = clazz.clazz.name.toString() + '.' + selectorName.substringBefore('(') val method = clazz.methods[methodName]!! val returnType = clazz.methods[methodName]!!.returnType.type + val methodArgs = mutableListOf(receiver) val names = parseArgList(expr.lastChild as KtCallExpression, scopeDepth) - return evaluateFunctionCallExpression(LLVMVariable(methodName, returnType, scope = LLVMRegisterScope()), names, method.args) + methodArgs.addAll(names) + + return evaluateFunctionCallExpression(LLVMVariable(methodName, returnType, scope = LLVMVariableScope()), methodArgs, method.args) } diff --git a/translator/src/test/kotlin/tests/input/simply_class_1.txt b/translator/src/test/kotlin/tests/input/simply_class_1.txt new file mode 100644 index 00000000000..11d04a1a9a7 --- /dev/null +++ b/translator/src/test/kotlin/tests/input/simply_class_1.txt @@ -0,0 +1 @@ +simply_class_1(6789) == 6794 \ No newline at end of file diff --git a/translator/src/test/kotlin/tests/kotlin/simply_class_1.kt b/translator/src/test/kotlin/tests/kotlin/simply_class_1.kt new file mode 100644 index 00000000000..036ef280ead --- /dev/null +++ b/translator/src/test/kotlin/tests/kotlin/simply_class_1.kt @@ -0,0 +1,15 @@ +annotation class Native(val type: String = "") + +@Native +class classname_A(@Native("i32") val x: Int) { + + fun method(): Int { + return this.x + 5 + } +} + +fun simply_class_1(zz: Int) : Int{ + val x = classname_A(zz) + val r = x.method() + return r +} \ No newline at end of file