summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Bauereiss2018-05-08 18:48:18 +0100
committerThomas Bauereiss2018-05-09 14:40:30 +0100
commit972d349919fc5ebe911604330ea3c80e70fdcfad (patch)
tree4307d3580852321185337e41ebe77307f746e6e2 /src
parentb6b46102fc49eae53c27d5d6540d41981c75da0c (diff)
Add tests for Isabelle->OCaml generation for CHERI and AArch64
Diffstat (limited to 'src')
-rw-r--r--src/gen_lib/state_monad.lem13
-rw-r--r--src/type_check.mli2
2 files changed, 15 insertions, 0 deletions
diff --git a/src/gen_lib/state_monad.lem b/src/gen_lib/state_monad.lem
index 8253b800..a2919762 100644
--- a/src/gen_lib/state_monad.lem
+++ b/src/gen_lib/state_monad.lem
@@ -265,3 +265,16 @@ let update_reg_field_bit regfield i reg_val bit =
let new_field_value = set_bit (regfield.field_is_inc) current_field_value i (to_bitU bit) in
regfield.set_field reg_val new_field_value
let write_reg_field_bit reg regfield i = update_reg reg (update_reg_field_bit regfield i)*)
+
+(* TODO Add Show typeclass for value and exception type *)
+val show_result : forall 'a 'e. result 'a 'e -> string
+let show_result = function
+ | Value _ -> "Value ()"
+ | Ex (Failure msg) -> "Failure " ^ msg
+ | Ex (Throw _) -> "Throw"
+end
+
+val prerr_results : forall 'a 'e 's. SetType 's => set (result 'a 'e * 's) -> unit
+let prerr_results rs =
+ let _ = Set.map (fun (r, _) -> let _ = prerr_endline (show_result r) in ()) rs in
+ ()
diff --git a/src/type_check.mli b/src/type_check.mli
index a5d38363..1c0e2f09 100644
--- a/src/type_check.mli
+++ b/src/type_check.mli
@@ -271,6 +271,8 @@ val destruct_exist : Env.t -> typ -> (kid list * n_constraint * typ) option
val destruct_range : Env.t -> typ -> (kid list * n_constraint * nexp * nexp) option
+val destruct_numeric : Env.t -> typ -> (kid list * n_constraint * nexp) option
+
val destruct_vector : Env.t -> typ -> (nexp * order * typ) option
type uvar =