summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGabriel Kerneis2013-11-05 16:46:18 +0000
committerGabriel Kerneis2013-11-05 16:46:18 +0000
commitd7e3a2e798fbc77f74a59593fff874f0198b5864 (patch)
tree5a6888193c36e3e0c14531fd141df7cfe9e21d24 /src
parent097b5eff41ff77f5ef54d937a9e1ac8bc46ccbc6 (diff)
De-infix operator before looking it up in the interpreter
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp.lem4
-rw-r--r--src/test/test3.sail2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index aeb846d9..08943dc8 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -674,6 +674,10 @@ and interp_main t_level l_env l_mem exp =
| _ -> (Error "Application with expression other than identifier",l_mem,l_env)
end
| E_app_infix l op r ->
+ let op = match op with
+ | Id x -> DeIid x
+ | DeIid _ -> op
+ end in
resolve_outcome (interp_main t_level l_env l_mem l)
(fun lv lm le ->
resolve_outcome (interp_main t_level l_env lm r)
diff --git a/src/test/test3.sail b/src/test/test3.sail
index 60f32469..3127db28 100644
--- a/src/test/test3.sail
+++ b/src/test/test3.sail
@@ -8,7 +8,7 @@ val ( ( nat * nat ) -> nat effect { wmem , rmem } ) MEM_SIZE
(* extern functions *)
val extern ( nat -> nat pure ) add = "add"
-val extern ( nat -> nat pure ) (: + ) = "add" (* infix plus *)
+val extern ( nat -> nat pure ) (: + ) = "add_infix" (* infix plus *)
function nat (: * ) ( < nat > x, < nat > y ) = 42