summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lem_interp/interp_inter_imp.lem8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lem_interp/interp_inter_imp.lem b/src/lem_interp/interp_inter_imp.lem
index 2ff0c1a8..ecedf046 100644
--- a/src/lem_interp/interp_inter_imp.lem
+++ b/src/lem_interp/interp_inter_imp.lem
@@ -401,6 +401,11 @@ let translate_address top_level end_flag thunk_name registers address =
Interp.V_ctor (Id_aux (Id "Some") _) _ _ v] ->
let (mem_v,_) = extern_mem_value mode v in
((address_of_memory_value end_flag mem_v), Just n)
+ | Interp.V_tuple[Interp.V_ctor (Id_aux (Id "Some") _) _ _
+ (Interp.V_ctor _ _ (Interp.C_Enum n) _);
+ Interp.V_ctor (Id_aux (Id "Some") _) _ _ v] ->
+ let (mem_v,_) = extern_mem_value mode v in
+ ((address_of_memory_value end_flag mem_v), Just (integerFromNat n))
| Interp.V_tuple[Interp.V_ctor (Id_aux (Id "None") _) _ _ _;
Interp.V_ctor (Id_aux (Id "Some") _) _ _ v] ->
let (mem_v,_) = extern_mem_value mode v in
@@ -408,6 +413,9 @@ let translate_address top_level end_flag thunk_name registers address =
| Interp.V_tuple[Interp.V_ctor (Id_aux (Id "Some") _) _ _ (Interp.V_lit (L_aux (L_num n) _));
Interp.V_ctor (Id_aux (Id "None") _) _ _ _] ->
(Nothing, Just n)
+ | Interp.V_tuple[Interp.V_ctor (Id_aux (Id "Some") _) _ _ (Interp.V_ctor _ _ (Interp.C_Enum n) _);
+ Interp.V_ctor (Id_aux (Id "None") _) _ _ _] ->
+ (Nothing, Just (integerFromNat n))
| _ -> Assert_extra.failwith ("About to generate Nothing,Nothing for translate address. Given " ^ (Interp.string_of_value addr)) end)
| (Nothing, Just err) -> match err with
| Internal_error msg -> Assert_extra.failwith msg