diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index e62a1e9006c..cf3fd49cf02 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -219,6 +219,10 @@ task fields(type: UnitKonanTest) { } +task fields1(type: UnitKonanTest) { + source = "codegen/object/fields1.kt" +} + task constructor(type: UnitKonanTest) { source = "codegen/object/constructor.kt" } diff --git a/backend.native/tests/codegen/object/fields1-test.c b/backend.native/tests/codegen/object/fields1-test.c new file mode 100644 index 00000000000..7bc9fcf8594 --- /dev/null +++ b/backend.native/tests/codegen/object/fields1-test.c @@ -0,0 +1,12 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*primary_constructor)(int, int) = resolve_symbol("kfun:primaryConstructorCall(Int;Int)"); + int (*secondary_constructor)(int) = resolve_symbol("kfun:secondaryConstructorCall(Int)"); + + if (primary_constructor(0xdeadbeef, 41) != 42) return 1; + + if (secondary_constructor(41) != 42) return 1; + return 0; +} diff --git a/backend.native/tests/codegen/object/fields1.kt b/backend.native/tests/codegen/object/fields1.kt new file mode 100644 index 00000000000..6c6cebb8184 --- /dev/null +++ b/backend.native/tests/codegen/object/fields1.kt @@ -0,0 +1,8 @@ +class B(val a:Int, b:Int) { + constructor(pos:Int):this(1, pos) {} + val pos = b + 1 +} + +fun primaryConstructorCall(a:Int, b:Int) = B(a, b).pos + +fun secondaryConstructorCall(a:Int) = B(a).pos \ No newline at end of file