summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/typecheck/pass/enum_map.sail20
-rw-r--r--test/typecheck/pass/enum_map/v1.expect6
-rw-r--r--test/typecheck/pass/enum_map/v1.sail20
-rw-r--r--test/typecheck/pass/enum_map/v2.expect6
-rw-r--r--test/typecheck/pass/enum_map/v2.sail20
-rw-r--r--test/typecheck/pass/enum_map/v3.expect6
-rw-r--r--test/typecheck/pass/enum_map/v3.sail20
-rw-r--r--test/typecheck/pass/enum_map/v4.expect6
-rw-r--r--test/typecheck/pass/enum_map/v4.sail20
-rw-r--r--test/typecheck/pass/enum_map/v5.expect6
-rw-r--r--test/typecheck/pass/enum_map/v5.sail20
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:
+[enum_map/v1.sail]:6:7-25
+6 | A => (0xFFFF, "A", "A"),
+  | ^----------------^
+  | Each enumeration clause for E must define exactly 2 expressions for the functions as_bits, as_string
+  | 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:
+[enum_map/v2.sail]:7:2-3
+7 | B,
+  | ^
+  | Each enumeration clause for E must define exactly 2 expressions for the functions as_bits, as_string
+  | 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:
+[enum_map/v3.sail]:7:7-13
+7 | B => 0x0001,
+  | ^----^
+  | Each enumeration clause for E must define exactly 2 expressions for the functions as_bits, as_string
+  | 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:
+[enum_map/v4.sail]:12:8-14
+12 | A2 => 0xFFFF,
+  | ^----^
+  | Each enumeration clause for F must define exactly 2 expressions for the functions as_bits, as_string
+  | 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:
+[enum_map/v5.sail]:6:7-20
+6 | A => (0xFFFF, "A"),
+  | ^-----------^
+  | Each enumeration clause for E must define exactly 1 expressions for the functions as_bits
+  | 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))
+}