summaryrefslogtreecommitdiff
path: root/src/rewriter.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/rewriter.ml')
-rw-r--r--src/rewriter.ml16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/rewriter.ml b/src/rewriter.ml
index edda208d..2f83d532 100644
--- a/src/rewriter.ml
+++ b/src/rewriter.ml
@@ -3624,3 +3624,19 @@ let rewrite_defs_ocaml = [
("exp_lift_assign", rewrite_defs_exp_lift_assign);
(* ("separate_numbs", rewrite_defs_separate_numbs) *)
]
+
+let rewrite_check_annot =
+ let check_annot exp =
+ try
+ prerr_endline ("CHECKING: " ^ string_of_exp exp ^ " : " ^ string_of_typ (typ_of exp));
+ let _ = check_exp (env_of exp) (strip_exp exp) (typ_of exp) in
+ exp
+ with
+ Type_error (l, err) -> raise (Reporting_basic.err_typ l (string_of_type_error err))
+ in
+ let rewrite_exp = { id_exp_alg with e_aux = (fun (exp, annot) -> check_annot (E_aux (exp, annot))) } in
+ rewrite_defs_base { rewriters_base with rewrite_exp = (fun _ -> fold_exp rewrite_exp) }
+
+let rewrite_defs_check = [
+ ("check_annotations", rewrite_check_annot);
+ ]