(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* None | Some l , None -> Some l | None, Some l -> Some l | Some l1, Some l2 -> Some (merge l1 l2) let unloc loc = (loc.bp, loc.ep) let shift_loc kb kp loc = { loc with bp = loc.bp + kb ; ep = loc.ep + kp } (** Located type *) type 'a located = t option * 'a let tag ?loc x = loc, x let map f (l,x) = (l, f x) (** Exceptions *) let location : t Exninfo.t = Exninfo.make () let add_loc e loc = Exninfo.add e location loc let get_loc e = Exninfo.get e location let raise ?loc e = match loc with | None -> raise e | Some loc -> let info = Exninfo.add Exninfo.null location loc in Exninfo.iraise (e, info)