From 837ae60eafc857f0f1d6a6378a587f98b73abad3 Mon Sep 17 00:00:00 2001 From: Konstantin Anisimov Date: Mon, 28 Nov 2016 12:04:30 +0300 Subject: [PATCH] TEST: tests for safe cast added --- backend.native/tests/build.gradle | 6 +++++ .../tests/codegen/basics/safe_cast.kt | 23 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 backend.native/tests/codegen/basics/safe_cast.kt diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 70f78195176..39e5257d00d 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -241,6 +241,12 @@ task check_type(type: UnitKonanTest) { source = "codegen/basics/check_type.kt" } +task safe_cast(type: RunKonanTest) { + goldValue = "safe_cast_positive: true\n" + + "safe_cast_negative: true\n" + source = "codegen/basics/safe_cast.kt" +} + task aritmetic(type: UnitKonanTest) { source = "codegen/function/arithmetic.kt" } diff --git a/backend.native/tests/codegen/basics/safe_cast.kt b/backend.native/tests/codegen/basics/safe_cast.kt new file mode 100644 index 00000000000..4231058162b --- /dev/null +++ b/backend.native/tests/codegen/basics/safe_cast.kt @@ -0,0 +1,23 @@ +open class A +class B : A() +class C + +fun foo(a: Any) : A? = a as? A + +fun safe_cast_positive(): Boolean { + val b = B() + return foo(b) === b +} + +fun safe_cast_negative(): Boolean { + val c = C() + return foo(c) == null +} + + +fun main(args: Array) { + val safeCastPositive = safe_cast_positive().toString() + val safeCastNegative = safe_cast_negative().toString() + println("safe_cast_positive: " + safeCastPositive) + println("safe_cast_negative: " + safeCastNegative) +} \ No newline at end of file