diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/loc.ml | 4 | ||||
| -rw-r--r-- | lib/loc.mli | 17 |
2 files changed, 16 insertions, 5 deletions
diff --git a/lib/loc.ml b/lib/loc.ml index e373a760cb..39f2d7dfba 100644 --- a/lib/loc.ml +++ b/lib/loc.ml @@ -59,6 +59,10 @@ let join_loc = merge (** Located type *) type 'a located = t * 'a + +let to_pair x = x +let tag ?loc x = Option.default ghost loc, x + let located_fold_left f x (_,a) = f x a let located_iter2 f (_,a) (_,b) = f a b let down_located f (_,a) = f a diff --git a/lib/loc.mli b/lib/loc.mli index bb88f86428..fef1d89388 100644 --- a/lib/loc.mli +++ b/lib/loc.mli @@ -18,9 +18,6 @@ type t = { ep : int; (** end position *) } -type 'a located = t * 'a -(** Embed a location in a type *) - (** {5 Location manipulation} *) (** This is inherited from CAMPL4/5. *) @@ -54,12 +51,22 @@ val get_loc : Exninfo.info -> t option val raise : ?loc:t -> exn -> 'a (** [raise loc e] is the same as [Pervasives.raise (add_loc e loc)]. *) -(** {5 Location utilities} *) +(** {5 Objects with location information } *) + +type 'a located = t * 'a +(** Embed a location in a type *) + +(** Warning, this API is experimental *) + +val to_pair : 'a located -> t * 'a +val tag : ?loc:t -> 'a -> 'a located val located_fold_left : ('a -> 'b -> 'a) -> 'a -> 'b located -> 'a +val down_located : ('a -> 'b) -> 'a located -> 'b + +(* Current not used *) val located_iter2 : ('a -> 'b -> unit) -> 'a located -> 'b located -> unit -val down_located : ('a -> 'b) -> 'a located -> 'b (** Projects out a located object *) (** {5 Backward compatibility} *) |
