From 9c28555e55bd099f7b8a99ac2eb727ad4003a1b5 Mon Sep 17 00:00:00 2001 From: Konstantin Anisimov Date: Wed, 16 Nov 2016 17:02:01 +0300 Subject: [PATCH] Test for cast added --- backend.native/tests/build.gradle | 4 ++++ backend.native/tests/codegen/basics/cast_simple-test.c | 10 ++++++++++ backend.native/tests/codegen/basics/cast_simple.kt | 10 ++++++++++ 3 files changed, 24 insertions(+) create mode 100644 backend.native/tests/codegen/basics/cast_simple-test.c create mode 100644 backend.native/tests/codegen/basics/cast_simple.kt diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index f0e391d97d0..ff3bdc59fd4 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -179,6 +179,10 @@ task local_variable(type: UnitKonanTest) { source = "codegen/basics/local_variable.kt" } +task cast_simple(type: UnitKonanTest) { + source = "codegen/basics/cast_simple.kt" +} + task hello0(type: RunKonanTest) { goldValue = "Hello, world!\n" source = "runtime/basic/hello0.kt" diff --git a/backend.native/tests/codegen/basics/cast_simple-test.c b/backend.native/tests/codegen/basics/cast_simple-test.c new file mode 100644 index 00000000000..c32cd57e670 --- /dev/null +++ b/backend.native/tests/codegen/basics/cast_simple-test.c @@ -0,0 +1,10 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*castTest)() = resolve_symbol("kfun:castTest()"); + + if (!castTest()) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/basics/cast_simple.kt b/backend.native/tests/codegen/basics/cast_simple.kt new file mode 100644 index 00000000000..2ae6c1e2c5c --- /dev/null +++ b/backend.native/tests/codegen/basics/cast_simple.kt @@ -0,0 +1,10 @@ +open class A() {} +class B(): A() {} + +fun castSimple(o: Any) : A = o as A + +fun castTest(): Boolean { + val b = B() + castSimple(b) + return true +}