summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp.lem2
-rw-r--r--src/test/test1.sail4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index 57b3067b..786d742f 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -681,7 +681,7 @@ and interp_main t_level l_env l_mem exp =
(fun vals -> V_vector (List_extra.head indexes) true vals) (*Need to see increasing or not, can look at types later*) l_env l_mem [] exps
| E_block(exps) -> interp_block t_level l_env l_env l_mem exps
| E_app f args ->
- (match (exp_list t_level (fun es -> E_app f es) V_tuple l_env l_mem [] args) with
+ (match (exp_list t_level (fun es -> E_app f es) (fun vs -> match vs with | [] -> V_lit L_unit | [v] -> v | vs -> V_tuple vs end) l_env l_mem [] args) with
| (Value v,lm,le) ->
(match (f,t_level) with
| (id,(Env defs externs lets regs mems ctors)) ->
diff --git a/src/test/test1.sail b/src/test/test1.sail
index 7747783e..3580f3e6 100644
--- a/src/test/test1.sail
+++ b/src/test/test1.sail
@@ -13,5 +13,7 @@ let bool e = true
let bit v = bitzero
let ( bit [ 32 ] ) v1 = 0b101
-function bit main _ = v1[0]
+function bit sw s = switch s { case 0 -> bitzero }
+
+function bit main _ = {sw(0); v1[0] }