diff options
| author | Gabriel Kerneis | 2014-01-07 19:35:25 +0100 |
|---|---|---|
| committer | Gabriel Kerneis | 2014-01-07 19:35:25 +0100 |
| commit | 4cb48452cc294560acc5a62735bd41cb52d36cc2 (patch) | |
| tree | 2d01be444bbc4942395fd27f770ea19d5b4cfb9d | |
| parent | 30db6c5227126b13455bccc8f68602ad658f6b92 (diff) | |
interp: recover identifiers in error messages
Not displayed currently because of new-lem's lack of string
concatenation.
| -rw-r--r-- | src/lem_interp/interp.lem | 7 |
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) |
