summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGabriel Kerneis2014-01-07 19:35:25 +0100
committerGabriel Kerneis2014-01-07 19:35:25 +0100
commit4cb48452cc294560acc5a62735bd41cb52d36cc2 (patch)
tree2d01be444bbc4942395fd27f770ea19d5b4cfb9d /src
parent30db6c5227126b13455bccc8f68602ad658f6b92 (diff)
interp: recover identifiers in error messages
Not displayed currently because of new-lem's lack of string concatenation.
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp.lem7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index f9502b26..aa0080cf 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -12,6 +12,8 @@ open import Interp_ast
let foldr2 f x l l' = List.foldr (Tuple.uncurry f) x (List.zip l l')
let map2 f l l' = List.map (Tuple.uncurry f) (List.zip l l')
+let get_id id = match id with Id s -> s | DeIid s -> s end
+
type value =
| V_boxref of nat
| V_lit of lit
@@ -470,7 +472,8 @@ and interp_main t_level l_env l_mem exp =
| Just(regf) ->
(Action (Read_reg regf Nothing) (Frame (Id "0") (E_id (Id "0")) l_env l_mem Top), l_mem, l_env)
| Nothing ->
- (Error "unbound identifier",l_mem,l_env)
+ let name = get_id id in
+ (Error "unbound identifier" (* XXX ^ name *),l_mem,l_env)
end
end
end
@@ -645,7 +648,7 @@ and interp_main t_level l_env l_mem exp =
| Just(funcls) ->
(match find_funcl funcls v with
| Nothing ->
- let name = match id with Id s -> s | DeIid s -> s end in
+ let name = get_id id in
(Error ("No matching pattern for function " (* XXX ^ name *)),l_mem,l_env)
| Just(env,exp) ->
resolve_outcome (interp_main t_level env l_mem exp)