summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorThomas Bauereiss2018-03-09 18:32:03 +0000
committerThomas Bauereiss2018-03-14 12:19:02 +0000
commita24882a531822ed8f71c1a5e050343ac1a8cbcfa (patch)
treef55e658263b978472bf9454ee1e8bfefeb1bca48 /test
parentdfc417cea131f3e8bb033f3e25b24c94f909c809 (diff)
Disallow impure global let bindings
Effectful expressions are monadic in Lem, causing type errors when binding them to global immutable variables.
Diffstat (limited to 'test')
-rw-r--r--test/typecheck/pass/pure_record.sail4
-rw-r--r--test/typecheck/pass/pure_record2.sail4
-rw-r--r--test/typecheck/pass/pure_record3.sail4
3 files changed, 9 insertions, 3 deletions
diff --git a/test/typecheck/pass/pure_record.sail b/test/typecheck/pass/pure_record.sail
index b56a1a98..15f14a3b 100644
--- a/test/typecheck/pass/pure_record.sail
+++ b/test/typecheck/pass/pure_record.sail
@@ -5,7 +5,9 @@ struct State ('a : Type) = {
Z : vector(1, dec, bit)
}
-let myStateM : State(bit) = {
+val myStateM : unit -> State(bit) effect {undef}
+
+function myStateM () = {
r : State(bit) = undefined;
r.N = 0b1;
r.Z = 0b1;
diff --git a/test/typecheck/pass/pure_record2.sail b/test/typecheck/pass/pure_record2.sail
index 2ca42541..cbdb2c9d 100644
--- a/test/typecheck/pass/pure_record2.sail
+++ b/test/typecheck/pass/pure_record2.sail
@@ -5,7 +5,9 @@ struct State ('a : Type) ('n : Int) = {
Z : vector(1, dec, bit)
}
-let myStateM : State(bit, 1) = {
+val myStateM : unit -> State(bit, 1) effect {undef}
+
+function myStateM () = {
r : State(bit, 1) = undefined;
r.N = 0b1;
r.Z = 0b1;
diff --git a/test/typecheck/pass/pure_record3.sail b/test/typecheck/pass/pure_record3.sail
index 6db6dc5e..cd3e849a 100644
--- a/test/typecheck/pass/pure_record3.sail
+++ b/test/typecheck/pass/pure_record3.sail
@@ -7,7 +7,9 @@ struct State ('a : Type) ('n : Int) = {
register procState : State(bit, 1)
-let myStateM : State(bit, 1) = {
+val myStateM : unit -> State(bit, 1) effect {undef}
+
+function myStateM () = {
r : State(bit, 1) = undefined;
r.N = 0b1;
r.Z = 0b1;