From c4abf2e8f4858897bd3a1fa2a56c5d7eac988af3 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 25 Jul 2024 16:34:50 +0200 Subject: [PATCH] Add acceptance test 106 showing issue with if/is implicit casting. --- examples/acceptance_tests/106/aiken.lock | 7 +++ examples/acceptance_tests/106/aiken.toml | 9 ++++ examples/acceptance_tests/106/lib/tests.ak | 62 ++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 examples/acceptance_tests/106/aiken.lock create mode 100644 examples/acceptance_tests/106/aiken.toml create mode 100644 examples/acceptance_tests/106/lib/tests.ak diff --git a/examples/acceptance_tests/106/aiken.lock b/examples/acceptance_tests/106/aiken.lock new file mode 100644 index 00000000..6e350cda --- /dev/null +++ b/examples/acceptance_tests/106/aiken.lock @@ -0,0 +1,7 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +requirements = [] +packages = [] + +[etags] diff --git a/examples/acceptance_tests/106/aiken.toml b/examples/acceptance_tests/106/aiken.toml new file mode 100644 index 00000000..214d0223 --- /dev/null +++ b/examples/acceptance_tests/106/aiken.toml @@ -0,0 +1,9 @@ +name = "aiken-lang/106" +version = "0.0.0" +license = "Apache-2.0" +description = "Aiken contracts for project 'aiken-lang/106'" + +[repository] +user = "aiken-lang" +project = "106" +platform = "github" diff --git a/examples/acceptance_tests/106/lib/tests.ak b/examples/acceptance_tests/106/lib/tests.ak new file mode 100644 index 00000000..8e3b67de --- /dev/null +++ b/examples/acceptance_tests/106/lib/tests.ak @@ -0,0 +1,62 @@ +type Foo { + foo: Int, +} + +type Bar { + Buzz + Bazz +} + +test soft_casting_1() { + let data: Data = Foo { foo: 42 } + if data is Foo { + True + } else { + False + } +} + +test soft_casting_2() { + let data: Data = Foo { foo: 42 } + if data is Foo { .. }: Foo { + True + } else { + False + } +} + +test soft_casting_3() { + let data: Data = Buzz + if data is Foo { + False + } else { + True + } +} + +test soft_casting_4() { + let data: Data = Buzz + if data is Foo { .. }: Foo { + False + } else { + True + } +} + +test soft_casting_5() { + let data: Data = Bazz + if data is Foo { + False + } else { + True + } +} + +test soft_casting_6() { + let data: Data = Bazz + if data is Foo { .. }: Foo { + False + } else { + True + } +}