From dedc98b0c14262c53e8573d7fe1dcaa370e43fb5 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Fri, 13 Jun 2014 14:17:22 +0200 Subject: Move a lot of things. --- libs/util.ml | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'libs') diff --git a/libs/util.ml b/libs/util.ml index 522c3ec..494faac 100644 --- a/libs/util.ml +++ b/libs/util.ml @@ -1,11 +1,30 @@ -exception TypeError +(* Locations *) + +type position = Lexing.position +let position_unknown = Lexing.dummy_pos + +type extent = position * position +let extent_unknown = (position_unknown, position_unknown) + + +(* Exceptions *) + +exception NoLocError of string +let error x = raise (NoLocError x) + +exception LocError of extent list * string +let loc_error l f x = + try f x with + | NoLocError e -> raise (LocError([l], e)) + | LocError(q, e) -> raise (LocError(l::q, e)) + +(* Varmaps *) module VarMap = Mapext.Make(String) -exception Duplicate of string let disjoint_union k a b = match a, b with | Some x, None -> Some x | None, Some y -> Some y - | _ -> raise (Duplicate k) + | _ -> error ("Duplicate name in disjoint union: " ^ k) let rec fix equal f s = let fs = f s in -- cgit v1.2.3