diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/typecheck/pass/lexp_vec.sail | 10 | ||||
| -rw-r--r-- | test/typecheck/pass/lexp_vec/v1.expect | 11 | ||||
| -rw-r--r-- | test/typecheck/pass/lexp_vec/v1.sail | 17 | ||||
| -rw-r--r-- | test/typecheck/pass/lexp_vec/v2.expect | 7 | ||||
| -rw-r--r-- | test/typecheck/pass/lexp_vec/v2.sail | 17 |
5 files changed, 60 insertions, 2 deletions
diff --git a/test/typecheck/pass/lexp_vec.sail b/test/typecheck/pass/lexp_vec.sail index b20da027..99ae0dca 100644 --- a/test/typecheck/pass/lexp_vec.sail +++ b/test/typecheck/pass/lexp_vec.sail @@ -2,10 +2,16 @@ default Order dec $include <prelude.sail> -register V : vector(1, dec, bitvector(32, dec)) +register V : vector(16, dec, bitvector(32, dec)) val zeros : forall 'n, 'n >= 0. unit -> bitvector('n, dec) +val write_V : forall 'i, 0 <= 'i < 16. (int('i), bitvector(32, dec)) -> unit effect {wreg} + +function write_V(i, v) = { + V[i] = v +} + function main() : unit -> unit = { - V[0] = zeros() + write_V(0, zeros()) } diff --git a/test/typecheck/pass/lexp_vec/v1.expect b/test/typecheck/pass/lexp_vec/v1.expect new file mode 100644 index 00000000..953aa7d1 --- /dev/null +++ b/test/typecheck/pass/lexp_vec/v1.expect @@ -0,0 +1,11 @@ +Type error: +[[96mlexp_vec/v1.sail[0m]:12:2-6 +12[96m |[0m V[i] = v + [91m |[0m [91m^--^[0m + [91m |[0m Bounds check failed for l-expression: (0 <= 'i & 'i < 16) + [91m |[0m This error was caused by: + [91m |[0m [[96mlexp_vec/v1.sail[0m]:12:2-6 + [91m |[0m 12[96m |[0m V[i] = v + [91m |[0m [91m |[0m [91m^--^[0m + [91m |[0m [91m |[0m Bounds check failed for l-expression: (0 <= 'i & 'i < 16) + [91m |[0m diff --git a/test/typecheck/pass/lexp_vec/v1.sail b/test/typecheck/pass/lexp_vec/v1.sail new file mode 100644 index 00000000..862f20dd --- /dev/null +++ b/test/typecheck/pass/lexp_vec/v1.sail @@ -0,0 +1,17 @@ +default Order dec + +$include <prelude.sail> + +register V : vector(16, dec, bitvector(32, dec)) + +val zeros : forall 'n, 'n >= 0. unit -> bitvector('n, dec) + +val write_V : forall 'i. (int('i), bitvector(32, dec)) -> unit effect {wreg} + +function write_V(i, v) = { + V[i] = v +} + +function main() : unit -> unit = { + write_V(0, zeros()) +} diff --git a/test/typecheck/pass/lexp_vec/v2.expect b/test/typecheck/pass/lexp_vec/v2.expect new file mode 100644 index 00000000..3cf52c8d --- /dev/null +++ b/test/typecheck/pass/lexp_vec/v2.expect @@ -0,0 +1,7 @@ +Type error: +[[96mlexp_vec/v2.sail[0m]:16:2-22 +16[96m |[0m write_V(16, zeros()) + [91m |[0m [91m^------------------^[0m + [91m |[0m Could not resolve quantifiers for write_V + [91m |[0m [94m*[0m (0 <= 16 & 16 < 16) + [91m |[0m diff --git a/test/typecheck/pass/lexp_vec/v2.sail b/test/typecheck/pass/lexp_vec/v2.sail new file mode 100644 index 00000000..f0aaae1e --- /dev/null +++ b/test/typecheck/pass/lexp_vec/v2.sail @@ -0,0 +1,17 @@ +default Order dec + +$include <prelude.sail> + +register V : vector(16, dec, bitvector(32, dec)) + +val zeros : forall 'n, 'n >= 0. unit -> bitvector('n, dec) + +val write_V : forall 'i, 0 <= 'i < 16. (int('i), bitvector(32, dec)) -> unit effect {wreg} + +function write_V(i, v) = { + V[i] = v +} + +function main() : unit -> unit = { + write_V(16, zeros()) +} |
