diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index c12097e794d..1238070a30c 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -256,10 +256,15 @@ task local_variable(type: UnitKonanTest) { source = "codegen/basics/local_variable.kt" } + task cast_simple(type: UnitKonanTest) { source = "codegen/basics/cast_simple.kt" } +task null_check(type: UnitKonanTest) { + source = "codegen/basics/null_check.kt" +} + task hello0(type: RunKonanTest) { goldValue = "Hello, world!\n" source = "runtime/basic/hello0.kt" diff --git a/backend.native/tests/codegen/basics/null_check-test.c b/backend.native/tests/codegen/basics/null_check-test.c new file mode 100644 index 00000000000..c230eb3f44e --- /dev/null +++ b/backend.native/tests/codegen/basics/null_check-test.c @@ -0,0 +1,19 @@ +#include +#include + +extern void *resolve_symbol(const char*); + +int +run_test() { + uint8_t (*null_check_eqeq1 )() = resolve_symbol("kfun:null_check_eqeq1()"); + uint8_t (*null_check_eqeq2 )() = resolve_symbol("kfun:null_check_eqeq2()"); + uint8_t (*null_check_eqeqeq1)() = resolve_symbol("kfun:null_check_eqeqeq1()"); + uint8_t (*null_check_eqeqeq2)() = resolve_symbol("kfun:null_check_eqeqeq2()"); + + if (null_check_eqeq1()) return 1; + if (!null_check_eqeq2()) return 1; + if (null_check_eqeqeq1()) return 1; + if (!null_check_eqeqeq2()) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/basics/null_check.kt b/backend.native/tests/codegen/basics/null_check.kt new file mode 100644 index 00000000000..a56abc9b97d --- /dev/null +++ b/backend.native/tests/codegen/basics/null_check.kt @@ -0,0 +1,23 @@ +//--- Test "eqeq" -------------------------------------------------------------// + +fun check_eqeq(a: Any?) = a == null + +fun null_check_eqeq1() : Boolean { + return check_eqeq(Any()) +} + +fun null_check_eqeq2() : Boolean { + return check_eqeq(null) +} + +//--- Test "eqeqeq" -----------------------------------------------------------// + +fun check_eqeqeq(a: Any?) = a === null + +fun null_check_eqeqeq1() : Boolean { + return check_eqeqeq(Any()) +} + +fun null_check_eqeqeq2() : Boolean { + return check_eqeqeq(null) +}