summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKathy Gray2014-01-09 13:47:53 +0000
committerKathy Gray2014-01-09 13:47:53 +0000
commit4bd01aaa630fbed653b9ceeefd7aa868182367d4 (patch)
tree83f6d01fe5c1c25424bf13811ce9f503a60ffa73 /src
parent84b6dbb4ae0e5761dfb73e888fb5f71068282ee1 (diff)
Fixed a single-argument tuple bug on function calls
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] }