diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/typecheck/pass/enum_map.sail | 20 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v1.expect | 6 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v1.sail | 20 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v2.expect | 6 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v2.sail | 20 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v3.expect | 6 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v3.sail | 20 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v4.expect | 6 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v4.sail | 20 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v5.expect | 6 | ||||
| -rw-r--r-- | test/typecheck/pass/enum_map/v5.sail | 20 |
11 files changed, 150 insertions, 0 deletions
diff --git a/test/typecheck/pass/enum_map.sail b/test/typecheck/pass/enum_map.sail new file mode 100644 index 00000000..224a1f9f --- /dev/null +++ b/test/typecheck/pass/enum_map.sail @@ -0,0 +1,20 @@ +default Order dec + +$include <prelude.sail> + +enum E with as_bits -> bits(16), as_string -> string = { + A => (0xFFFF, "A"), + B => (0x0001, "B"), + C => (sail_zeros(16), "C") +} + +enum F with as_bits -> bits(16) = { + A2 => 0xFFFF, + B2 => 0x0001, + C2 => sail_zeros(16) +} + +function main() -> unit = { + print_bits("A = ", E_as_bits(A)); + print_bits("A2 = ", F_as_bits(A2)) +} diff --git a/test/typecheck/pass/enum_map/v1.expect b/test/typecheck/pass/enum_map/v1.expect new file mode 100644 index 00000000..27fd168e --- /dev/null +++ b/test/typecheck/pass/enum_map/v1.expect @@ -0,0 +1,6 @@ +Error: +[[96menum_map/v1.sail[0m]:6:7-25 +6[96m |[0m A => (0xFFFF, "A", "A"), + [91m |[0m [91m^----------------^[0m + [91m |[0m Each enumeration clause for E must define exactly 2 expressions for the functions as_bits, as_string + [91m |[0m Too many expressions have been given here diff --git a/test/typecheck/pass/enum_map/v1.sail b/test/typecheck/pass/enum_map/v1.sail new file mode 100644 index 00000000..bf61e54b --- /dev/null +++ b/test/typecheck/pass/enum_map/v1.sail @@ -0,0 +1,20 @@ +default Order dec + +$include <prelude.sail> + +enum E with as_bits -> bits(16), as_string -> string = { + A => (0xFFFF, "A", "A"), + B => (0x0001, "B"), + C => (sail_zeros(16), "C") +} + +enum F with as_bits -> bits(16) = { + A2 => 0xFFFF, + B2 => 0x0001, + C2 => sail_zeros(16) +} + +function main() -> unit = { + print_bits("A = ", E_as_bits(A)); + print_bits("A2 = ", F_as_bits(A2)) +} diff --git a/test/typecheck/pass/enum_map/v2.expect b/test/typecheck/pass/enum_map/v2.expect new file mode 100644 index 00000000..77f6e89a --- /dev/null +++ b/test/typecheck/pass/enum_map/v2.expect @@ -0,0 +1,6 @@ +Error: +[[96menum_map/v2.sail[0m]:7:2-3 +7[96m |[0m B, + [91m |[0m [91m^[0m + [91m |[0m Each enumeration clause for E must define exactly 2 expressions for the functions as_bits, as_string + [91m |[0m No expressions have been given here diff --git a/test/typecheck/pass/enum_map/v2.sail b/test/typecheck/pass/enum_map/v2.sail new file mode 100644 index 00000000..2d2ce314 --- /dev/null +++ b/test/typecheck/pass/enum_map/v2.sail @@ -0,0 +1,20 @@ +default Order dec + +$include <prelude.sail> + +enum E with as_bits -> bits(16), as_string -> string = { + A => (0xFFFF, "A"), + B, + C => (sail_zeros(16), "C") +} + +enum F with as_bits -> bits(16) = { + A2 => 0xFFFF, + B2 => 0x0001, + C2 => sail_zeros(16) +} + +function main() -> unit = { + print_bits("A = ", E_as_bits(A)); + print_bits("A2 = ", F_as_bits(A2)) +} diff --git a/test/typecheck/pass/enum_map/v3.expect b/test/typecheck/pass/enum_map/v3.expect new file mode 100644 index 00000000..2bfbfcde --- /dev/null +++ b/test/typecheck/pass/enum_map/v3.expect @@ -0,0 +1,6 @@ +Error: +[[96menum_map/v3.sail[0m]:7:7-13 +7[96m |[0m B => 0x0001, + [91m |[0m [91m^----^[0m + [91m |[0m Each enumeration clause for E must define exactly 2 expressions for the functions as_bits, as_string + [91m |[0m Too few expressions have been given here diff --git a/test/typecheck/pass/enum_map/v3.sail b/test/typecheck/pass/enum_map/v3.sail new file mode 100644 index 00000000..3e21b6e6 --- /dev/null +++ b/test/typecheck/pass/enum_map/v3.sail @@ -0,0 +1,20 @@ +default Order dec + +$include <prelude.sail> + +enum E with as_bits -> bits(16), as_string -> string = { + A => (0xFFFF, "A"), + B => 0x0001, + C => (sail_zeros(16), "C") +} + +enum F with as_bits -> bits(16) = { + A2 => 0xFFFF, + B2 => 0x0001, + C2 => sail_zeros(16) +} + +function main() -> unit = { + print_bits("A = ", E_as_bits(A)); + print_bits("A2 = ", F_as_bits(A2)) +} diff --git a/test/typecheck/pass/enum_map/v4.expect b/test/typecheck/pass/enum_map/v4.expect new file mode 100644 index 00000000..b8924793 --- /dev/null +++ b/test/typecheck/pass/enum_map/v4.expect @@ -0,0 +1,6 @@ +Error: +[[96menum_map/v4.sail[0m]:12:8-14 +12[96m |[0m A2 => 0xFFFF, + [91m |[0m [91m^----^[0m + [91m |[0m Each enumeration clause for F must define exactly 2 expressions for the functions as_bits, as_string + [91m |[0m Too few expressions have been given here diff --git a/test/typecheck/pass/enum_map/v4.sail b/test/typecheck/pass/enum_map/v4.sail new file mode 100644 index 00000000..95b0ac9e --- /dev/null +++ b/test/typecheck/pass/enum_map/v4.sail @@ -0,0 +1,20 @@ +default Order dec + +$include <prelude.sail> + +enum E with as_bits -> bits(16), as_string -> string = { + A => (0xFFFF, "A"), + B => (0x0001, "B"), + C => (sail_zeros(16), "C") +} + +enum F with as_bits -> bits(16), as_string -> string = { + A2 => 0xFFFF, + B2 => 0x0001, + C2 => sail_zeros(16) +} + +function main() -> unit = { + print_bits("A = ", E_as_bits(A)); + print_bits("A2 = ", F_as_bits(A2)) +} diff --git a/test/typecheck/pass/enum_map/v5.expect b/test/typecheck/pass/enum_map/v5.expect new file mode 100644 index 00000000..355c2ad5 --- /dev/null +++ b/test/typecheck/pass/enum_map/v5.expect @@ -0,0 +1,6 @@ +Error: +[[96menum_map/v5.sail[0m]:6:7-20 +6[96m |[0m A => (0xFFFF, "A"), + [91m |[0m [91m^-----------^[0m + [91m |[0m Each enumeration clause for E must define exactly 1 expressions for the functions as_bits + [91m |[0m Too many expressions have been given here diff --git a/test/typecheck/pass/enum_map/v5.sail b/test/typecheck/pass/enum_map/v5.sail new file mode 100644 index 00000000..b5d05ff3 --- /dev/null +++ b/test/typecheck/pass/enum_map/v5.sail @@ -0,0 +1,20 @@ +default Order dec + +$include <prelude.sail> + +enum E with as_bits -> bits(16) = { + A => (0xFFFF, "A"), + B => (0x0001, "B"), + C => (sail_zeros(16), "C") +} + +enum F with as_bits -> bits(16) = { + A2 => 0xFFFF, + B2 => 0x0001, + C2 => sail_zeros(16) +} + +function main() -> unit = { + print_bits("A = ", E_as_bits(A)); + print_bits("A2 = ", F_as_bits(A2)) +} |
